QT学习笔记(五):Qt5的8种标准对话框示例
生活随笔
收集整理的這篇文章主要介紹了
QT学习笔记(五):Qt5的8种标准对话框示例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QT學習筆記(五):Qt5的8種標準對話框示例
- 前言
- 實例展示
- 1.顏色對話框
- 2.文件對話框
- 3.字體對話框
- 4.輸入對話框
- 5.消息對框
- 6.進度對話框
- 7.錯誤信息對話框
- 8.向導對話框.
前言
QT 提供了常用的對話框類型,他們全部繼承自QDialog類,并增加了自己的特色功能,比如顏色選擇對話框、文件對話框、字體對話框、輸入對話框、消息對框、錯誤信息對話框、進度對話框、向導對話框等,用戶無需再自己設計這些常用的對話框,這樣可以減少程序設計工作量。
實例展示
main.cpp 代碼:
#include "mywidget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MyWidget w;w.setWindowTitle(QStringLiteral("八種標準對話框展示"));w.show();return a.exec(); }mywidget.h 代碼:
#include <QWidget> class QErrorMessage; // 錯誤信息對話框類 前置聲明 #include <QWizard>namespace Ui { class MyWidget; }class MyWidget : public QWidget {Q_OBJECT public:explicit MyWidget(QWidget *parent = 0);~MyWidget(); private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_8_clicked(); private:Ui::MyWidget *ui;QErrorMessage *errordlg;QWizardPage *createPage1(); // 新添加QWizardPage *createPage2(); // 新添加QWizardPage *createPage3(); // 新添加 };mywidget.cpp 頭文件包含:
#include "mywidget.h" #include "ui_mywidget.h" #include <QDebug> // 調試函數 頭文件 #include <QColorDialog> // 1.顏色對話框 頭文件 #include <QFileDialog> // 2.文件對話框 頭文件 #include <QFontDialog> // 3.字體對話框 頭文件 #include <QInputDialog> // 4.輸入對話框 頭文件 #include <QMessageBox> // 5.消息色對話框 頭文件 #include <QProgressDialog> // 6.進度條對話框 頭文件 #include <QErrorMessage> // 7.錯誤信息對話框 頭文件運行界面展示:
1.顏色對話框
1)信號槽
// 顏色對話框 void MyWidget::on_pushButton_clicked() {// 創建顏色對話框 并獲取顏色(直接使用類的靜態函數 獲取color) // QColor color = QColorDialog::getColor(Qt::red, this, tr("顏色對話框"),QColorDialog::ShowAlphaChannel);// 創建顏色對話框對象QColorDialog dialog(Qt::red, this); // 創建對象dialog.setOption(QColorDialog::ShowAlphaChannel); // 顯示alpha選項dialog.exec(); // 以模態方式運行對話框QColor color = dialog.currentColor(); // 獲取當前顏色qDebug() << "color: " << color; // 調試信息輸出 }2)顯示
2.文件對話框
1)信號槽
// 文件對話框 void MyWidget::on_pushButton_2_clicked() {// 1、創建文件對話框 并獲取文件名(直接使用類的靜態函數 fileName)// getOpenFileName() 獲取單個文件 // QString fileName = QFileDialog::getOpenFileName(this, tr("文件對話框"),"D:", tr("圖片文件(*.png *.jpg *.jpeg *.bmp *.tif *.tiff);;所有文件(*)")); // qDebug()<< "單個fileNames:" << fileName;// 2、getOpenFileNames() 獲取多個文件QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("文件對話框"),"D:", tr("圖片文件(*.png *.jpg *.jpeg *.bmp *.tif *.tiff);;所有文件(*)"));for (int i =0; i<fileNames.length();i++) // 逐行顯示文件路徑名{qDebug()<< "多個fileNames["<<i+1<<"]:"<< fileNames[i];}// 3、創建保存文件對話框 并獲取保存的文件名(直接使用類的靜態函數 fileName)QString filename = QFileDialog::getSaveFileName(this,tr("保存對話框"),"D:",tr("*.bmp;; *.png;; *.jpg;; *.tif;; *.GIF"));}保存文件對話框設置代碼:
QFileDialog *fileDialog = new QFileDialog(this);//創建一個QFileDialog對象,構造函數中的參數可以有所添加。 fileDialog->setWindowTitle(tr("Save As"));//設置文件保存對話框的標題 fileDialog->setAcceptMode(QFileDialog::AcceptSave);//設置文件對話框為保存模式 fileDialog->setFileMode(QFileDialog::AnyFile);//設置文件對話框彈出的時候顯示任何文件,不論是文件夾還是文件 fileDialog->setViewMode(QFileDialog::Detail);//文件以詳細的形式顯示,顯示文件名,大小,創建日期等信息; //還有另一種形式QFileDialog::List,這個只是把文件的文件名以列表的形式顯示出來 fileDialog->setGeometry(10,30,300,200);//設置文件對話框的顯示位置 fileDialog->setDirectory(".");//設置文件對話框打開時初始打開的位置 fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));//設置文件類型過濾器//注意使用的是QFileDialog::Accepted或者QDialog::Accepted,不是QFileDialog::Accept if(fileDialog->exec() == QDialog::Accepted) // 對話框確定按鈕被按下 {QString path = fileDialog->selectedFiles()[0];//得到用戶選擇的文件名filePath=listWidget_File->item(listWidget_File->currentRow())->text();//這個是得到在ListWidget中點擊查看的圖片,得到這個圖片的名字filePath=QString("/media/sd/PICTURES")+filePath;//將路徑和文件名連接起來QImage iim(filePath);//創建一個圖片對象,存儲源圖片QPainter painter(&iim);//設置繪畫設備QFile file(path);//創建一個文件對象,存儲用戶選擇的文件if (!file.open(QIODevice::ReadWrite))//以只讀的方式打開用戶選擇的文件,如果失敗則返回{return;} }//以流方式寫入文件QByteArray ba;QBuffer buffer(&ba);buffer.open(QIODevice::WriteOnly);iim.save(&buffer, "JPG");//把圖片以流方式寫入文件緩存流中file.write(ba);//將流中的圖片寫入文件對象當中
2)
3.字體對話框
1)信號槽
// 字體對話框 void MyWidget::on_pushButton_3_clicked() {// ok用于標記是否按下了“OK”按鈕bool ok;QFont font = QFontDialog::getFont(&ok, this);// 如果按下“OK”按鈕,那么讓“字體對話框”按鈕使用新字體// 如果按下“Cancel”按鈕,那么輸出信息if (ok)ui->pushButton_3->setFont(font);elseqDebug() << tr("沒有選擇字體,使用默認字體!"); }2)顯示
4.輸入對話框
1)信號槽
// 輸入對話框 void MyWidget::on_pushButton_4_clicked() {bool ok;// 獲取字符串QString string = QInputDialog::getText(this, tr("輸入字符串對話框"),tr("請輸入用戶名:"), QLineEdit::Normal,tr("admin"), &ok);if(ok)qDebug() << "string:" << string;// 獲取整數int value1 = QInputDialog::getInt(this, tr("輸入整數對話框"),tr("請輸入-1000到1000之間的數值"), 100, -1000, 1000, 10, &ok);if(ok)qDebug() << "value1:" << value1;// 獲取浮點數double value2 = QInputDialog::getDouble(this, tr("輸入浮點數對話框"),tr("請輸入-1000到1000之間的數值"), 0.00, -1000, 1000, 2, &ok);if(ok)qDebug() << "value2:" << value2;// 獲取條目QStringList items;items << tr("條目1") << tr("條目2")<< tr("條目3")<< tr("條目4");QString item = QInputDialog::getItem(this, tr("輸入條目對話框"),tr("請選擇或輸入一個條目"), items, 0, true, &ok);if(ok)qDebug() << "item:" << item; }2)顯示
5.消息對框
1)信號槽
// 消息對話框 void MyWidget::on_pushButton_5_clicked() {// 問題對話框int ret1 = QMessageBox::question(this, tr("問題對話框"),tr("你了解Qt嗎?"), QMessageBox::Yes, QMessageBox::No);if(ret1 == QMessageBox::Yes)qDebug() << tr("問題!");// 提示對話框int ret2 = QMessageBox::information(this, tr("提示對話框"),tr("這是Qt書籍!"), QMessageBox::Ok);if(ret2 == QMessageBox::Ok)qDebug() << tr("提示!");// 警告對話框int ret3 = QMessageBox::warning(this, tr("警告對話框"),tr("不能提前結束!"), QMessageBox::Abort);if(ret3 == QMessageBox::Abort)qDebug() << tr("警告!");// 錯誤對話框int ret4 = QMessageBox::critical(this, tr("嚴重錯誤對話框"),tr("發現一個嚴重錯誤!現在要關閉所有文件!"), QMessageBox::YesAll);if(ret4 == QMessageBox::YesAll)qDebug() << tr("錯誤");// 關于對話框QMessageBox::about(this, tr("關于對話框"), tr("yafeilinux致力于Qt及Qt Creator的普及工作!")); }2)顯示
6.進度對話框
1)信號槽
// 進度對話框 void MyWidget::on_pushButton_6_clicked() {QProgressDialog dialog(tr("文件復制進度"), tr("取消"), 0, 50000, this);dialog.setWindowTitle(tr("進度對話框")); // 設置窗口標題dialog.setWindowModality(Qt::WindowModal); // 將對話框設置為模態dialog.show();for(int i=0; i<50000; i++) // 演示復制進度{dialog.setValue(i); // 設置進度條的當前值(使進度條推進)QCoreApplication::processEvents(); // 避免界面凍結if(dialog.wasCanceled()) // 按下取消按鈕則中斷break;}dialog.setValue(50000); // 這樣才能顯示100%,因為for循環中少加了一個數qDebug() << tr("復制結束!"); }2)顯示結果
7.錯誤信息對話框
1)mywidget.h 成員變量添加:
private:QErrorMessage *errordlg;2)mywidget.cpp 構造函數 MyWidget::MyWidget() 添加:
MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget) {errordlg = new QErrorMessage(this); // 添加 }3)信號槽
// 錯誤信息對話框 void MyWidget::on_pushButton_7_clicked() {errordlg->setWindowTitle(tr("錯誤信息對話框"));errordlg->showMessage(tr("這里是出錯信息!")); }4)顯示
8.向導對話框.
1)定義3個返回值為 QWizardPage 類對象指針的函數 createPage1(),createPage2(),createPage3():
// 向導頁面1 創建函數 QWizardPage * MyWidget::createPage1() {QWizardPage *page = new QWizardPage;page->setTitle(tr("介紹"));return page; } // 向導頁面2 QWizardPage * MyWidget::createPage2() {QWizardPage *page = new QWizardPage;page->setTitle(tr("用戶選擇信息"));return page; } // 向導頁面3 QWizardPage * MyWidget::createPage3() {QWizardPage *page = new QWizardPage;page->setTitle(tr("結束"));return page; }2)信號槽
// 向導對話框 void MyWidget::on_pushButton_8_clicked() {QWizard wizard(this);wizard.setWindowTitle(tr("向導對話框"));wizard.addPage(createPage1()); // 添加向導頁面wizard.addPage(createPage2());wizard.addPage(createPage3());wizard.exec(); }3)顯示
總結
以上是生活随笔為你收集整理的QT学习笔记(五):Qt5的8种标准对话框示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tf.train.get_checkpo
- 下一篇: C++一维数组指针详解