天天看點

QT筆記--标準對話框與自定義對話框

QT标準對話框

  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()函數,彈出對話框供使用者選擇,然後傳回檔案名。

  其他标準對話框使用方式大同小異。

自定義對話框架構

QT筆記--标準對話框與自定義對話框

自定義對話框建立步驟

  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 () ;                          //顯示對話框并擷取對話框的結果。
           

  對話框如下圖:

QT筆記--标準對話框與自定義對話框

參考資料:http://c.biancheng.net/view/1871.html

繼續閱讀