一、多窗口切換
第一步:首先創建一個項目,之後進入ui設計模式,在左側找到Label和Push Button這兩個左鍵拖入。
第二步:雙擊Label將其修改爲主界面,之後在Push Button 右鍵選擇clicked()轉到槽。
第三步:在函數槽中添加:(需要包含#include<QDialogt>)
void MainWindow::on_pushButton_clicked()
{
QDialog * dialog = new QDialog(this); //創建一個新的會話窗口
dialog -> show();
}
第四步:運行點擊PushButton 實現多窗口。
二、顏色對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QColorDialog>)
QColor color = QColorDialog::getColor(Qt::red,this,QObject::tr("顏色對話框"));this 代表對象本身 ::區域運算符 代表使用某個類中的函數或變量等
三、文件對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QFileDialog>)
QString filename = QFileDialog::getOpenFileName(this,QObject::tr("文件對話框"),"D:",QObject::tr("圖片文件(*png *jpg)"));
表示打開D:盤查看png或ipg的文件。*png和*jpg兩者之間有一個空格。
四、字體對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QFontDialog>)
void MainWindow::on_pushButton_4_clicked()
{
bool ok; //判斷標誌,判斷是否點擊了ok確定按鈕
QFont font = QFontDialog::getFont(&ok,this);
if(ok)
ui -> pushButton_4-> setFont(font); //將字體設置爲所選字體
}結果圖:
五、輸入消息對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QInputDialog>)
bool ok;
QString string = QInputDialog::getText(this,QObject::tr("輸入字符串對話框"),
QObject::tr("請輸入用戶名:"),QLineEdit::Normal
,QObject::tr("admin"),&ok);
if(ok)
qDebug()<<"string:"<<string;
int value1 = QInputDialog::getInt(this,QObject::tr("請輸入整數對話框"),
QObject::tr("請輸入-1000~1000之間的數值"),100,-1000,1000,10,&ok);
if(ok)
qDebug()<<"value1:"<<value1;
double value2 = QInputDialog::getDouble(this,QObject::tr("輸入浮點數對話框"),
QObject::tr("請輸入-1000~1000之間的數值"),0.00,-1000,1000,2,&ok);
if(ok)
qDebug()<<"value2:"<<value2;
QStringList items;
items<<QObject::tr("條目1")<<QObject::tr("條目2");
QString item = QInputDialog::getItem(this,QObject::tr("輸入條目對話框"),
QObject::tr("請選擇一個條目"),items,0,false
,&ok);
if(ok)
qDebug()<<"item:"<<item;
用戶名-》QLineEdit::Normal//模式爲輸入顯示內容整數->10 表示上下增減按鈕一次增或者減10
浮點數->2表示小數點後留兩位
條目-> 0表示默認顯示第0個條目,true表示條目是否可以更改(true爲可修改)。
結果圖:六、消息對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QMessageBox>)
int ret1 = QMessageBox::question(this,QObject::tr("問題對話框"),
QObject::tr("你瞭解Qt麼?"),QMessageBox::Yes,QMessageBox::No);
if(ret1 == QMessageBox::Yes)
qDebug()<<QObject::tr("問題!");
int ret2 = QMessageBox::information(this,QObject::tr("提示對話框"),
QObject::tr("這是Qt書籍!"),QMessageBox::Ok);
if(ret2 == QMessageBox::Ok)
qDebug()<<QObject::tr("提示!");
int ret3 = QMessageBox::warning(this,QObject::tr("警告對話框"),
QObject::tr("不能提前結束!"),QMessageBox::Abort);
if(ret3 == QMessageBox::Abort)
qDebug()<<QObject::tr("警告!");
int ret4 = QMessageBox::critical(this,QObject::tr("嚴重錯誤對話框"),
QObject::tr("發現了一個嚴重錯誤!現在要關閉所有文件!"),QMessageBox::YesAll);
if(ret4 == QMessageBox::YesAll)
qDebug()<<QObject::tr("錯誤!");
QMessageBox::about(this,QObject::tr("關於對話框"),QObject::tr("Qt gongzuo!"));
七、進度對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QProgressDialog>)
QProgressDialog dialog(QObject::tr("文件複製進度"),QObject::tr("取消"),0,50000,this); //50000運行次數
dialog.setWindowTitle(QObject::tr("進度對話框"));
dialog.setWindowModality(Qt::WindowModal); //將對話框設置爲模態(不可交互,只能等一個結束另一個纔可以運行)
dialog.show();
for(int i = 0;i < 50000;i++)
{
dialog.setValue(i); //每一次將值改標爲i
QCoreApplication::processEvents(); //避免長時間傳輸導致界面凍結
if(dialog.wasCanceled()) //如果點擊cancel按鈕則取消傳輸
break;
}
dialog.setValue(50000);
qDebug()<<QObject::tr("複製結束!");結果圖:
八、嚮導對話框
添加一個按鈕(Push Button)(需要頭文件#include<QWizard>)
1、首先在xxx.h文件中添加#include<QWizard>
添加聲明:
private:
Ui::MyWidget *ui;
QWizardPage * createPage1();
QWizardPage * createPage2();
QWizardPage * createPage3();
目的是生成三個嚮導頁面。
2、在xxx.cpp文件中定義
QWizardPage * MyWidget::createPage1()
{
QWizardPage * page = new QWizardPage;
page -> setTitle(QObject::tr("介紹"));
return page;
}
QWizardPage * MyWidget::createPage2()
{
QWizardPage * page = new QWizardPage;
page -> setTitle(QObject::tr("用戶選擇信息"));
return page;
}
QWizardPage * MyWidget::createPage3()
{
QWizardPage * page = new QWizardPage;
page -> setTitle(QObject::tr("結束"));
return page;
}3、在槽中定義:
QWizard wizard(this);
wizard.setWindowTitle(QObject::tr("嚮導對話框"));
wizard.addPage(createPage1());
wizard.addPage(createPage2());
wizard.addPage(createPage3());
wizard.exec();
結果圖:
九、錯誤信息對話框
添加一個按鈕(Push Button),右鍵轉到槽添加:(需要頭文件#include<QErrorMessage>)
QErrorMessage * dialog = new QErrorMessage(this);
dialog -> setWindowTitle(QObject::tr("錯誤消息對話框"));
dialog -> showMessage(QObject::tr("這裏是出錯信息"));結果圖: