如何在Qt显示菜单项点击模式对话框(.ui)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (956)

我想创建一个简单的'关于'模式对话框,从帮助 - >关于应用程序菜单中调用。我用QT Creator(.ui文件)创建了一个模态对话窗口。

现在我有这个代码,但它显示了一个新的模式对话框:

void MainWindow::on_actionAbout_triggered()
{
    about = new QDialog(0,0);
    about->show();
}

谢谢!

提问于
用户回答回答于

需要使用你的.ui文件中的UI设置对话框。Qt uic编译器从你的.ui文件生成一个头文件,你需要在代码中包含该文件。假定你的.ui文件被调用about.ui,并且对话框被命名About,然后uic创建ui_about.h包含类的文件Ui_About。有很多不同的方法来设置用户界面,最简单的方法就是做

#include "ui_about.h"

...

void MainWindow::on_actionAbout_triggered()
{
    about = new QDialog(0,0);

    Ui_About aboutUi;
    aboutUi.setupUi(about);

    about->show();
}

更好的方法是使用继承,因为它更好地封装了对话框,以便可以实现特定于子类中特定对话框的任何功能:

AboutDialog.h:

#include <QDialog>
#include "ui_about.h"

class AboutDialog : public QDialog, public Ui::About {
    Q_OBJECT

public:
    AboutDialog( QWidget * parent = 0);
};

AboutDialog.cpp:

AboutDialog::AboutDialog( QWidget * parent) : QDialog(parent) {

    setupUi(this);

    // perform additional setup here ...
}

用法:

#include "AboutDialog.h"

...

void MainWindow::on_actionAbout_triggered() {
    about = new AboutDialog(this);
    about->show();
}

无论如何,重要的代码是调用setupUi()方法。

用户回答回答于

对于模态对话框,应该使用exec()QDialogs的方法。

about = new QDialog(0, 0);

// The method does not return until user closes it.
about->exec();

// In this point, the dialog is closed.

扫码关注云+社区

领取腾讯云代金券