qt show widget_Qt中show()与exec()
1.?show()默認(rèn)顯示的是非模態(tài)對(duì)話(huà)框,即此對(duì)話(huà)框出現(xiàn)后你還可以對(duì)其他窗口進(jìn)行操作,可以用setModal函數(shù)進(jìn)行設(shè)置窗口為模態(tài),即無(wú)法操作其他窗口,即被阻塞. 而exec()出現(xiàn)的只能是模態(tài)對(duì)話(huà)框.
2. show()顯示的窗口無(wú)論是否模態(tài),都立刻將操作權(quán)返回, 運(yùn)行下面代碼;而exec()則是得等待exec出的窗口關(guān)閉后再運(yùn)行下面代碼.
qt幫助文檔那個(gè)中寫(xiě)的是:Shows the dialog as a modal dialog, blocking until the user closes it. The function returns a DialogCode result., 返回的DialogCode 有QDialog::Accepted和QDialog::Rejected,可以根據(jù)返回值來(lái)進(jìn)行判斷等操作.
下面是一個(gè)小程序:
#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();
}
重點(diǎn)是multiwindow.cpp中的this->hide();
dialog->exec();
this->show();當(dāng)按下按鈕時(shí),先將主窗口隱藏,然后顯示exec的模態(tài)對(duì)話(huà)框,不繼續(xù)執(zhí)行下面代碼,等待對(duì)話(huà)框的操作, 按下對(duì)話(huà)框的按鈕后,對(duì)話(huà)框關(guān)閉,繼續(xù)執(zhí)行主對(duì)話(huà)框代碼,將主對(duì)話(huà)框顯示,即實(shí)現(xiàn)對(duì)話(huà)框的調(diào)用.
若將exec替換為show,則會(huì)出現(xiàn)兩個(gè)對(duì)話(huà)框并存的現(xiàn)象.
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的qt show widget_Qt中show()与exec()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 共享内存变量_浅谈pyth
- 下一篇: java订单超时取消设计_quartz框