Qt之各種對話框(信號和槽)

一、多窗口切換

第一步:首先創建一個項目,之後進入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("這裏是出錯信息"));
結果圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章