gpt4 book ai didi

c++ - 带状态栏的对话框

转载 作者:行者123 更新时间:2023-11-27 23:03:04 25 4
gpt4 key购买 nike

我需要使用带有状态栏的对话框。我不知道如何在 QDialog 中使用它,所以我使用 QMainWindow。但是 QMainWindow 没有 exec() 函数,show() 函数是异步工作的。

我使用 QtDesigner 但我不明白如何使用它添加状态栏。我还想在这个状态栏中看到 widnow 的小部件的状态提示。

最佳答案

您可以使用QWidget::setWindowModality 使您自己的对话窗口模态化, 大概 ApplicationModal or WindowModal ,例如在它的构造函数中。此外,您可能想要设置 window flags for dialog ,所以你可以给你一个父对话。因此,将这些添加到您的对话框主窗口构造函数中:

setWindowModality(Qt::ApplicationModal);
setWindowFlags(Qt::Dialog);

这样即使有父窗口,它也会作为独立窗口打开,在关闭之前阻止 GUI 的其余部分,防止它获取用户输入事件。这应该与您使用 QDialog::open 时的行为相同.

要捕捉到用户关闭对话框,您可能应该添加相同的 signals as used by QDialog给它,并适本地发出它们。这样您就可以将自定义对话框和 QDialog 互换,而且您的代码也更容易理解(这称为静态多态性,赋予语义无关但功能相同的事物相同的名称) .


下面是一些示例代码,DialogWindow 自定义类的第一个构造函数:

DialogWindow ::DialogWindow (QWidget *parent) : QMainWindow(parent)
{
setWindowFlags(Qt::Dialog);
setWindowModality(Qt::ApplicationModal);
setCentralWidget(new QLabel("Dialog")); // show some content
}

然后在 main 函数中使用它:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton w("Open the Dialog"); // the "main window" of the whole application
DialogWindow *dialog = new DialogWindow (&w);
QObject::connect(&w, SIGNAL(clicked()), dialog, SLOT(show()));
w.show();

return a.exec();
}

关于c++ - 带状态栏的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25905728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com