日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习笔记(五):Qt5的8种标准对话框示例

發布時間:2024/7/23 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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种标准对话框示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。