【问题标题】:QDialog without tab in task bar任务栏中没有选项卡的QDialog
【发布时间】:2013-01-20 21:39:36
【问题描述】:

这个问题很简单。是否可以显示QDialogQMessageBox 而无需在任务栏中为其创建选项卡?我尝试使用 exec()、show()、更改模态值,但选项卡始终处于打开状态。

【问题讨论】:

    标签: windows qt qdialog qmessagebox


    【解决方案1】:

    您需要为QMessageBox指定父窗口:

    QApplication a(argc, argv);
    qt_test_dialog w;
    w.show();
    // with additional button
    // QMessageBox box(QMessageBox::Information, "Title", "Hello there!", QMessageBox::Ok);
    
    // without additional button!
    QMessageBox box(QMessageBox::Information, "Title", "Hello there!", QMessageBox::Ok, &w);
    

    或者简单地说:

    QMessageBox box(&w);
    box.setText("Hello");
    box.exec();
    

    注意,父参数甚至可以为空QWidget

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        // plain wrong (you will not be able to exit application) - but it demonstrates 
        // the case
        QMessageBox box(new QWidget());
        box.setText("Hello");
        box.exec();
        return a.exec();
    }
    

    【讨论】:

    • 那么 qt_test_dialog 必须是什么?只是一个自定义的 QWidget?能不能详细解释一下?
    • @AndreyChernukha Chernukha 在我的例子中,这是一个简单的 QMainWindow 子类(从向导生成),但它可以是自定义 QWidget 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多