Qt / C ++技术显示内联对话框

时间:2015-10-04 20:55:26

标签: c++ qt qt-creator qt-designer

我在Mac上使用QtCreator 5.5,使用C ++,我是新手。我有一个MainForm窗口。我想在其中显示一个对话框,但是在它自己的UI设计器中单独绘制它。然后,在运行时,我的代码将拉出其他UI并在该窗口中显示它。

想象一下例如一个主应用程序窗口。单击按钮,您需要查看确认对话框。通常你可以用一个单独的窗口来做到这一点。相反,我希望它在运行时内联,在主窗口上显示它就像一个小部件。

当然,我可以在一个小部件中将我的对话框放在我现有的窗口顶部,但是这会让我想要能够在自己的设计器窗口中调整它,并在主窗口中根据需要加载它。我需要它。

QtCreator和C ++中的技术是什么?

2 个答案:

答案 0 :(得分:1)

  1. 打开 QtCreator 。这项任务只能通过那里完成。

  2. 假设你有一个常规的 Qt Widget应用程序,你需要在 MainWindow的centralWidget 中添加一个 QWidget 控件。 UI Designer

  3. 接下来,点击用户界面设计器中的修改,然后右键单击表单。选择添加新...

  4. 在打开的对话框中,选择 Qt > Qt Designer Form Class ,然后点击选择...

  5. 选择小工具,然后选择其余的默认值。这会创建一个名为表单的小部件,form.hform.cpp也会添加到您的项目中。

  6. 现在找到form.ui并在 Qt Designer 中打开它。在QWidget表单上添加堆叠小部件控件。将其大小调整为与父窗口小部件相同的大小。接下来,在 Stacked Widget Control 第一个页面上添加标签控件。这个标签只是为了证明这是有效的。您将其设置为“测试”文本。现在关闭设计师。

  7. 返回主窗口用户界面文件,找到您添加的 QWidget 并右键单击它。选择推广... ,会出现一个对话框。在该对话框中,将提升的班级名称设置为表单,然后将页眉文件设置为form.h。将其他所有内容保留为默认设置,然后点击添加,然后点击推广

  8. 您可能希望在之前添加的 QWidget 中的主窗口中立即发生变化。然而,遗憾的是,这并非如此。您只能在运行时看到更改。所以,现在你应该在 Qt Creator 运行你的应用程序。您将看到它运行时,您的小部件现在包含您创建的form.ui组件的内容。

  9. 现在,这里有趣的地方。您现在可以在form.ui上绘制所有内联模式对话框,只需将它们放在 Stacked Widget 控件的不同页面上。您还可以设置窗口小部件的属性,以便 QWidget 容器的背景不透明和暗(创建背景调光器),然后在运行时调整 QWidget 的大小达到主窗口的大小。当您需要切换到其他对话框时,可以在 StackedWidget 项目上使用setCurrentWidget()setCurrentIndex(),如下所示:

  10. QStackedWidget *w = ui->widget->findChild<QStackedWidget *>("stackedWidget");
    w->setCurrentIndex(1);
    

    在该示例中,我的 MainWindow 上的 QWidget 控件仅命名为widget。然后我找到了名为stackedWidget的控件。一旦我拥有它,我就使用了setCurrentIndex(x)方法来更改该小部件的页面以显示我需要的那个。请记住,这是一个从零开始的索引。因此,(1)将是第2页。

答案 1 :(得分:0)

QMainWindow::setCentralWidget

在QMainWindow构造函数中添加:

MyDialogClass myDialog = new MyDialogClass();
setCentralWidget(myDialog);