qt show widget_Qt中show()与exec()
1. show()默认显示的是非模态对话框,即此对话框出现后你还可以对其他窗口进行操作,可以用setModal函数进行设置窗口为模态,即无法操作其他窗口,即被阻塞. 而exec()出现的只能是模态对话框.
2. show()显示的窗口无论是否模态,都立刻将操作权返回, 运行下面代码;而exec()则是得等待exec出的窗口关闭后再运行下面代码.
qt帮助文档那个中写的是:Shows the dialog as a modal dialog, blocking until the user closes it. The function returns a DialogCode result., 返回的DialogCode 有QDialog::Accepted和QDialog::Rejected,可以根据返回值来进行判断等操作.
下面是一个小程序:
#ifndef DIALOG1_H
#define DIALOG1_H
#include
#include "ui_dialog1.h"
class dialog1 : public QDialog
{
Q_OBJECT
public:
dialog1(QWidget *parent = 0);
protected slots:
void buttonClicked();
private:
Ui::dialog1 ui;
};
#endif // DIALOG1_H
/*multiwindow.h*/#ifndef MULTIWINDOW_H#define MULTIWINDOW_H
#include "dialog1.h"
#include
#include "ui_multiwindow.h"
class multiWindow : public QMainWindow
{
Q_OBJECT
public:
multiWindow(QWidget *parent = 0);
public slots:
void button1Clicked();
private:
Ui::multiWindowClass ui;
dialog1 *dialog;
};
#endif // MULTIWINDOW_H
/*dialog1.cpp*/#include "dialog1.h"
dialog1::dialog1(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(buttonClicked()));
}
void dialog1::buttonClicked()
{
this->close();
}
/*multiwindow.cpp*/#include "multiwindow.h"
multiWindow::multiWindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(button1Clicked()));
connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(close()));
dialog = new dialog1(this);
}
void multiWindow::button1Clicked()
{
this->hide();
//dialog->show();
dialog->exec();
this->show();
}/*main.cpp*/#include "multiwindow.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
multiWindow w;
w.show();
return a.exec();
}
重点是multiwindow.cpp中的this->hide();
dialog->exec();
this->show();当按下按钮时,先将主窗口隐藏,然后显示exec的模态对话框,不继续执行下面代码,等待对话框的操作, 按下对话框的按钮后,对话框关闭,继续执行主对话框代码,将主对话框显示,即实现对话框的调用.
若将exec替换为show,则会出现两个对话框并存的现象.
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的qt show widget_Qt中show()与exec()的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python 共享内存变量_浅谈pyth
- 下一篇: java订单超时取消设计_quartz框