我想作一个简单的“关于”模态对话框,从帮助 - 叫>关于应用程序菜单。 我已经创建了Qt创建者(的.ui文件)一个模态对话框窗口。
应在菜单“关于”插槽什么码?
现在,我有这样的代码,但它显示了一个新的模式对话框(不是基于我的about.ui):
void MainWindow::on_actionAbout_triggered()
{
about = new QDialog(0,0);
about->show();
}
谢谢!
我想作一个简单的“关于”模态对话框,从帮助 - 叫>关于应用程序菜单。 我已经创建了Qt创建者(的.ui文件)一个模态对话框窗口。
应在菜单“关于”插槽什么码?
现在,我有这样的代码,但它显示了一个新的模式对话框(不是基于我的about.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()
方法。
BTW:你在上面的代码对话框非模态。 要显示一个模式对话框,要么设置windowModality
您的对话框的标志Qt::ApplicationModal
或使用exec()
而不是show()
对于模态对话框,你应该使用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.
文件说:
显示一个模式对话框的最常用的方法是调用它
exec()
函数。 当用户关闭对话框,exec()
将提供一个有用的返回值。
另一种方法:你并不需要一个模式对话框。 让对话框显示无模式及其连接accepted()
和rejected()
信号至适宜的槽。 然后你就可以把所有的代码在接受槽,而不是把他们后立即show()
因此,使用这种方法,你不会真的需要一个模式对话框。