/* * 這是幾個標準對話框的使用方法 * 能夠經過按鈕觸發槽,進而建立標準對話框對象 * 建立對象後所需操做僅僅是設置幾個參數 */ #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() << "複製結束!"; }