QT标準對話框
QT提供了預設的五種對話框,分别為以下對話框類

其中從上到下分别為
1、檔案對話框
2、顔色對話框
3、字型對話框
4、輸入對話框
5、消息框
标準對話框調用方式
void Dialog::on_btnOpen_clicked()
{ //選擇單個檔案
QString curPath=QDir::currentPath();//擷取系統目前目錄
//擷取應用程式的路徑
QString dlgTitle="選擇一個檔案"; //對話框标題
QString filter="文本檔案(*.txt);;圖檔檔案(*.jpg *.gif *.png);;所有檔案(*.*)"; //檔案過濾器
QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
ui->plainTextEdit->appendPlainText(aFileName);
}
如代碼所示,定義對話框的目錄,标題,檔案過濾器,然後使調用QFileDialog類下的getOpenFileName()函數,彈出對話框供使用者選擇,然後傳回檔案名。
其他标準對話框使用方式大同小異。
自定義對話框架構
自定義對話框建立步驟
1、使用Qt Creator 的菜單項 File->New File or Project,建立一個Application項目Qt Widgets Application,選擇基類為QMainWindow。
2、使用Qt Creator 的菜單項 File->New File or Project,建立一個QT類下的Qt Designer Form Class(Qt設計師界面類),選擇Dialog without buttons。類名寫為QWDialogSize。
3、在qwdialogsize.ui裡面,自定義你的彈窗界面,并在qwdialogsize.cpp裡面,編寫你的類函數。
4、在mainwindow.cpp裡面,包含自定義對話框類的頭檔案#include “qwdialogsize.h”。
5、接下來,在mainwindow.cpp裡面,就可以使用QWDialogSize類去 定義對象并調用對話框了。
舉例:
建立的對話框如圖所示:
一、qwdialogsize.cpp下的函數
int QWDialogSize::rowCount()
{ //用于主視窗調用獲得行數的輸入值
return ui->spinBoxRow->value();
}
int QWDialogSize::columnCount()
{//用于主視窗調用獲得列數的輸入值
return ui->spinBoxColumn->value();
}
void QWDialogSize::setRowColumn(int row, int column)
{ //初始化資料顯示
ui->spinBoxRow->setValue(row);
ui->spinBoxColumn->setValue(column);
}
二、mainwindow.cpp下的對話框對象定義以及調用
//模态對話框,動态建立,用過後删除
QWDialogSize *dlgTableSize=new QWDialogSize(this);
Qt::WindowFlags flags=dlgTableSize->windowFlags();
dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);
dlgTableSize->setRowColumn(1,1);
int ret=dlgTableSize->exec () ;// 以模态方式顯示對話框
if (ret==QDialog::Accepted)
{ //OK按鈕被按下,擷取對話框上的輸入
int cols=dlgTableSize->columnCount();
int rows=dlgTableSize->rowCount();
}
delete dlgTableSize;
三、解析:在qwdialogsize.cpp中,定義了三個函數:
int QWDialogSize::rowCount() //用來擷取彈窗界面上的行設定。
int QWDialogSize::columnCount() //用來擷取彈窗界面上的列設定。
void QWDialogSize::setRowColumn(int row, int column) //用來設定彈窗上行列輸入框的預設值。
之後在mainwindow.cpp中,
QWDialogSize *dlgTableSize=new QWDialogSize(this); //定義了一個QWDialogSize類型的對象。
dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint); //設定視窗屬性
int ret=dlgTableSize->exec () ; //顯示對話框并擷取對話框的結果。
對話框如下圖:
參考資料:http://c.biancheng.net/view/1871.html