提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、對(duì)話框的概念
對(duì)話框是和用戶簡(jiǎn)短交互的一種窗口。如:登錄界面,關(guān)于界面,選擇文件界面…
他不能放在在其他的Qt組件里面。
二、與QWidget的區(qū)別
我們可以在main.cpp中寫下面的代碼:
實(shí)驗(yàn)1:
#include <QApplication>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QDialog d(&w);
w.setWindowTitle("QWidget");//設(shè)置該窗口標(biāo)題
d.setWindowTitle("QDialog");
w.show();
d.show();
return a.exec();
}
我們可以看到,QDialog指定了父類,可還是出現(xiàn)了2個(gè)窗口,可以按正常邏輯,應(yīng)該是出現(xiàn)一個(gè)窗口QWidget啊,可現(xiàn)在卻出現(xiàn)了QDialog。
實(shí)驗(yàn)2:
#include <QApplication>
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog d;
QWidget w(&d);
w.setWindowTitle("QWidget");
d.setWindowTitle("QDialog");
w.show();
d.show();
return a.exec();
}
這次我們讓QWidget放到QDialog里面,就會(huì)發(fā)現(xiàn),只有QDialog。那么QWidget就被放在QDialog里面了,因?yàn)樗臀覀僎Dialog的顏色一樣,所以看不到
三、對(duì)話框2種顯示方法
1、使用exec()函數(shù)顯示:模態(tài)對(duì)話框
特點(diǎn):顯示后無(wú)法與父窗口交互。是一種阻塞試的調(diào)用。
阻塞試是什么意思:必須要點(diǎn)關(guān)閉按鈕/使用里面的一個(gè)函數(shù),等下我們會(huì)講。
使用場(chǎng)景:必須要用戶選擇
2、使用show()函數(shù)顯示:非模態(tài)對(duì)話框
特點(diǎn):顯示后獨(dú)立存在可以在同時(shí)與父組件交互。是一種非阻塞式的對(duì)話框方式
使用場(chǎng)景:和模態(tài)對(duì)話框相對(duì)的
小技巧:
模態(tài)對(duì)話框一般在棧上創(chuàng)建。
非模態(tài)對(duì)話框一般在堆上創(chuàng)建。
非模態(tài)對(duì)話框需要指定Qt::WA_DeleteOnClose。原因:因?yàn)闊o(wú)法得知他的關(guān)閉時(shí)間,他又是在堆上創(chuàng)建的,所以當(dāng)我們指定了這個(gè)東西的時(shí)候,關(guān)閉時(shí),他自動(dòng)delete該窗口。
四、對(duì)話框返回值的概念
只有模態(tài)對(duì)話框才有返回值。
使用dene(int i)返回
一般使用下面兩個(gè)作為參數(shù):
QDialog::Accepted用戶操作成功
QDialog::Rejectd用戶操作失敗
本節(jié)示例
使用Qt設(shè)計(jì)師類創(chuàng)建一個(gè)QDialog。
UI界面如下:
點(diǎn)擊登錄打印用戶名和密碼,點(diǎn)擊取消退出.
提示:取消可使用槽函數(shù)close()
dialog.cpp文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-419130.html
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(Login()));
}
void Dialog::Login()
{
qDebug() << ui->lineEdit->text();
qDebug() << ui->lineEdit_2->text();
}
Dialog::~Dialog()
{
delete ui;
}
dialog.h文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-419130.html
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
private slots:
void Login();
};
#endif // DIALOG_H
到了這里,關(guān)于Qt之對(duì)話框(QDialog)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!