Qt中幾個經常使用的標準對話框

/*
 * 這是幾個標準對話框的使用方法
 * 能夠經過按鈕觸發槽,進而建立標準對話框對象
 * 建立對象後所需操做僅僅是設置幾個參數
 */

#include <QDebug>
#include <QColorDialog> //顏色對話框
#include <QFileDialog>  //文件對話框
#include <QFontDialog>  //字體對話框
#include <QInputDialog> //輸入對話框
#include <QProgressDialog>  //進度對話框

選取顏色的對話框函數

void MyWidget::on_pushButton_clicked()
{

    QColor color = QColorDialog::getColor(Qt::red, this, "顏色框"/*,
                                          QColorDialog::ShowAlphaChannel*/);
    //調用顏色對話框的靜態函數,優勢是不用建立對象
    //前3參數爲初始顏色,父窗口,對話框標題,
    //註釋掉的可選參數功能是在對話框中顯示透明度選項,
    qDebug()<< "color: " << color;//調試用
    // qDebug的輸出好比:color:  QColor(ARGB 1, 0, 0, 0),分別是透明度alpha,紅綠藍
    //alpha默認值1表示徹底不透明,0是徹底透明,三基色0~1對應0~255

    /*
     //也能夠建立對象,設置方面更靈活
     QColorDialog dialog(Qt::red, this);    //建立對象
     dialog.setOption(QColorDialog::ShowAlphaChannel);
     dialog.exec();                         //模態方式運行
     QColor color = dialog.currentColor();  //獲取當前顏色
     qDebug() << "color: " <<color;         //輸出顏色信息
    */
}

文件對話框,打開保存文件等,但如下函數均只是獲取文件/文件夾路徑和名稱,並不執行打開、保存等實際操做字體

void MyWidget::on_pushButton_2_clicked()
{
    //該類有許多其餘函數,可自行查閱
    QString fileName = QFileDialog::getOpenFileName(this, "單文件選擇框", "d:",
                                                    "圖片文件(*png *jpg);;文本文件(*txt)");
    //以模態方式運行一個文件對話框,選擇單個文件,不能是文件夾
    //單擊打開,返回所選文件名稱格爲如:fileName:  "E:/愛佳利/Pictures/she/she.png"
    //多個文件是getOpenFileNames,須要使用QStringList fileNames =
    //4參數爲父窗口,對話框標題,默認路徑,文件類型過濾器,不指定則默承認選擇全部類型的文件
    //同類別兩文件類型之間須要一個空格*png *jpg,不一樣類別之間兩分號;;
    //另有getSaveFileName()保存文件和getExistingDirectory()獲取文件夾路徑,不能是文件

    qDebug() << "fileName: " << fileName;

/*
    QString fileName1 = QFileDialog::getSaveFileName(this, "保存文件對話框", QString(), "圖片類型(*png)");
    qDebug() << "fileName1: " << fileName1 ;
    QString fileName2 = QFileDialog::getExistingDirectory(this, "文件路徑對話框", "d:");
    qDebug() << "fileName2: " << fileName2;
    QStringList fileNames = QFileDialog::getOpenFileNames(this, "多文件選擇框", "d:",
                                                          "圖片文件(*png *jpg)");
    qDebug() << "fileNames: ";
    for(auto x: fileNames){
        qDebug() << x;
    }
*/
}

選取字體的對話框ui

void MyWidget::on_pushButton_3_clicked()
{
    bool ok {false};    //ok用於標記是否單擊了OK按鈕

    QFont font = QFontDialog::getFont(&ok, this);
    //單擊OK按鈕,ok設置爲true,font指向新字體

    //根據是否選擇了字體,進行字體更改
    if(ok) ui->pushButton_3->setFont(font);

}

限定輸入類型和範圍的對話框this

void MyWidget::on_pushButton_4_clicked()
{
    //用於限定輸入內容
    bool ok {false};    //用於標記是否輸入成功
//輸入字符串
    QString string = QInputDialog::getText(this, "輸入字符串", "用戶名:",
                                           QLineEdit::Normal, "admin", &ok);
    if(ok) qDebug() << "string:" << string;
    //6參數做用爲:父窗口,窗口標題,對話框中標籤顯示文本,
    //輸入內容的顯示模式(如密碼設爲黑點),輸入框中默認字符串,點擊確認後的變量

/*
//輸入整數
    int value1 = QInputDialog::getInt(this, "輸入整數", "年齡",
                                      18, 1, 200, 1, &ok);
    if(ok) qDebug() << "value1: " << value1;
    //第二行參數做用爲:默認數值,最小,最大,使用箭頭的變化幅度,確認標記

//輸入浮點數
    double value2 = QInputDialog::getDouble(this, "輸入浮點數", "圓周率",
                                            3.14, 2.14, 4.14, 10, &ok);
    if(ok) qDebug() << "value2: " << value2;
    //二行參數10表示格式爲保留10位小數

//輸入或選擇項目
    QStringList items{};
    items << "項目1" <<"項目2";
    QString item = QInputDialog::getItem(this, "項目輸入", "選擇或輸入一個項目",
                                         items, 0, true, &ok);
    if(ok) qDebug() << "item:" <<item;
    //二行參數爲:提供的可選項目列表對象,默認選中項目0,項目可自主輸入,確認標記

*/    
}

進度條對話框調試

//Qt中進度條的顯示方式有2種,一種是控件方式:QProgressBar;
    //一種是針對慢速過程的對話框方式:QProgressDialog。
void MyWidget::on_pushButton_5_clicked()
{
    //QProgressBar和QProgressDialog都可經過setRange設置計數範圍,用循環累加實現變化。
    const long COUNT = {999999};//設置進度條計數值
    const long STEP = {1};//設置計數步進值

    QProgressDialog *progressDlg = new QProgressDialog(this);
    progressDlg->setWindowModality(Qt::WindowModal);    //設置模態
    progressDlg->setMinimumDuration(0);//dialog出現需等待的時間
    progressDlg->setWindowTitle("進度對話框");       //標題
    progressDlg->setLabelText("正在複製");          //顯示文本
    progressDlg->setCancelButtonText("取消");      //按鈕文本
    progressDlg->setRange(0, COUNT);
    for(long i = 0;i <= COUNT;i += STEP){
        if(progressDlg->wasCanceled())
            return;
        progressDlg->setValue(i);
    }
    qDebug() << "複製結束!";

}
相關文章
相關標籤/搜索