我在Mac上使用QtCreator 5.5,使用C ++,我是新手。我有一个MainForm窗口。我想在其中显示一个对话框,但是在它自己的UI设计器中单独绘制它。然后,在运行时,我的代码将拉出其他UI并在该窗口中显示它。
想象一下例如一个主应用程序窗口。单击按钮,您需要查看确认对话框。通常你可以用一个单独的窗口来做到这一点。相反,我希望它在运行时内联,在主窗口上显示它就像一个小部件。
当然,我可以在一个小部件中将我的对话框放在我现有的窗口顶部,但是这会让我想要能够在自己的设计器窗口中调整它,并在主窗口中根据需要加载它。我需要它。
QtCreator和C ++中的技术是什么?
答案 0 :(得分:1)
打开 QtCreator 。这项任务只能通过那里完成。
假设你有一个常规的 Qt Widget应用程序,你需要在 MainWindow的centralWidget 中添加一个 QWidget 控件。 UI Designer 。
接下来,点击用户界面设计器中的修改,然后右键单击表单。选择添加新...
在打开的对话框中,选择 Qt > Qt Designer Form Class ,然后点击选择...
选择小工具,然后选择其余的默认值。这会创建一个名为表单的小部件,form.h
和form.cpp
也会添加到您的项目中。
现在找到form.ui
并在 Qt Designer 中打开它。在QWidget表单上添加堆叠小部件控件。将其大小调整为与父窗口小部件相同的大小。接下来,在 Stacked Widget Control 第一个页面上添加标签控件。这个标签只是为了证明这是有效的。您将其设置为“测试”文本。现在关闭设计师。
返回主窗口的用户界面文件,找到您添加的 QWidget 并右键单击它。选择推广... ,会出现一个对话框。在该对话框中,将提升的班级名称设置为表单,然后将页眉文件设置为form.h
。将其他所有内容保留为默认设置,然后点击添加,然后点击推广。
您可能希望在之前添加的 QWidget 中的主窗口中立即发生变化。然而,遗憾的是,这并非如此。您只能在运行时看到更改。所以,现在你应该在 Qt Creator 中运行你的应用程序。您将看到它运行时,您的小部件现在包含您创建的form.ui
组件的内容。
现在,这里有趣的地方。您现在可以在form.ui
上绘制所有内联模式对话框,只需将它们放在 Stacked Widget 控件的不同页面上。您还可以设置窗口小部件的属性,以便 QWidget 容器的背景不透明和暗(创建背景调光器),然后在运行时调整 QWidget 的大小达到主窗口的大小。当您需要切换到其他对话框时,可以在 StackedWidget 项目上使用setCurrentWidget()
或setCurrentIndex()
,如下所示:
QStackedWidget *w = ui->widget->findChild<QStackedWidget *>("stackedWidget");
w->setCurrentIndex(1);
在该示例中,我的 MainWindow 上的 QWidget 控件仅命名为widget
。然后我找到了名为stackedWidget
的控件。一旦我拥有它,我就使用了setCurrentIndex(x)
方法来更改该小部件的页面以显示我需要的那个。请记住,这是一个从零开始的索引。因此,(1)
将是第2页。
答案 1 :(得分:0)
在QMainWindow构造函数中添加:
MyDialogClass myDialog = new MyDialogClass();
setCentralWidget(myDialog);