欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++?Qt?Dialog?對(duì)話框組件應(yīng)用技巧

 更新時(shí)間:2021年11月25日 11:49:15   作者:lyshark  
這篇文章主要介紹了C/C++?Qt?Dialog?對(duì)話框組件應(yīng)用,這里我將總結(jié)本人在開發(fā)過(guò)程中常用到的標(biāo)準(zhǔn)對(duì)話框的使用技巧,對(duì)C++?對(duì)話框組件相關(guān)知識(shí)感興趣的朋友一起看看吧

在Qt中對(duì)話框分為兩種形式,一種是標(biāo)準(zhǔn)對(duì)話框,另一種則是自定義對(duì)話框,在一般開發(fā)過(guò)程中標(biāo)準(zhǔn)對(duì)話框使用是最多的了,標(biāo)準(zhǔn)對(duì)話框一般包括 QMessageBox,QInputDialog,QFileDialog 這幾種,這里我將總結(jié)本人在開發(fā)過(guò)程中常用到的標(biāo)準(zhǔn)對(duì)話框的使用技巧。

Qt框架下,常用的標(biāo)準(zhǔn)對(duì)話框有下面這幾種:

  • QMessageBox 提示信息框
  • QInputDialog 基本輸入對(duì)話框(文本輸入,整數(shù)輸入,浮點(diǎn)數(shù)輸入,單選框輸入)
  • QFileDialog 文件選擇對(duì)話框(選擇文件,多選文件,保存文件)

QMessageBox 消息彈窗: 消息對(duì)話框用于提示用戶,常見的有四種分別是:提示,警告,錯(cuò)誤,確認(rèn),代碼歸納如下所示。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// By : LyShark
// https://www.cnblogs.com/lyshark
// 彈出各種MessageBox
void MainWindow::on_pushButton_clicked()
{
    QString dlgTitle="消息框";
    QString strInfo="文件已被修改,是否保存修改 ?";

    QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton; // 缺省按鈕
    QMessageBox::StandardButton result;                             // 返回選擇的按鈕

    // 彈窗分類 Question information warning critical
    result=QMessageBox::question(this, dlgTitle, strInfo,QMessageBox::Yes|QMessageBox::No |QMessageBox::Cancel,defaultBtn);

    if (result==QMessageBox::Yes)
        ui->plainTextEdit->appendPlainText("Question消息框: Yes 被選擇");
    else if(result==QMessageBox::No)
        ui->plainTextEdit->appendPlainText("Question消息框: No 被選擇");
    else if(result==QMessageBox::Cancel)
        ui->plainTextEdit->appendPlainText("Question消息框: Cancel 被選擇");
    else
        ui->plainTextEdit->appendPlainText("Question消息框: 無(wú)選擇");
}

// 彈出關(guān)于提示
void MainWindow::on_pushButton_2_clicked()
{
    QString dlgTitle="about 消息框";
    QString strInfo="我開發(fā)的數(shù)據(jù)查看軟件 V1.0 \n 保留所有版權(quán)";
    QMessageBox::about(this, dlgTitle, strInfo);
}

QMessageBox 退出事件: 彈窗組件還可以配合QCloseEvent實(shí)現(xiàn)事件通知機(jī)制,例如當(dāng)窗體被關(guān)閉則提示用戶是否關(guān)閉窗體。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QMessageBox>
#include <QCloseEvent>

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

// 窗口關(guān)閉時(shí)詢問(wèn)是否退出
void MainWindow::closeEvent(QCloseEvent *event)
{
   QMessageBox::StandardButton result=QMessageBox::question(this, "確認(rèn)", "確定要退出本程序嗎?",
                      QMessageBox::Yes|QMessageBox::No |QMessageBox::Cancel,
                      QMessageBox::No);

    if (result==QMessageBox::Yes)
        event->accept();
    else
        event->ignore();
}

// By : LyShark
// https://www.cnblogs.com/lyshark
MainWindow::~MainWindow()
{
    delete ui;
}

QInputDialog 對(duì)話框: 該對(duì)話框長(zhǎng)用于輸入一段特殊的文本,浮點(diǎn)數(shù),或者選擇一個(gè)列表框中的選項(xiàng),該功能用于簡(jiǎn)單的用戶交互場(chǎng)景。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QLineEdit>
#include <QInputDialog>

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 文本輸入對(duì)話框
void MainWindow::on_pushButton_clicked()
{
    QString dlgTitle="輸入文字對(duì)話框";
    QString txtLabel="請(qǐng)輸入文件名";
    QString defaultInput="新建文件.txt";
    QLineEdit::EchoMode echoMode=QLineEdit::Normal;       // 正常文字輸入
    // QLineEdit::EchoMode echoMode=QLineEdit::Password;  // 密碼輸入

    bool flag = false;
    QString text = QInputDialog::getText(this, dlgTitle,txtLabel, echoMode,defaultInput, &flag);
    if (flag && !text.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(text);
    }
}

// 整數(shù)數(shù)值輸入對(duì)話框
// By : LyShark
// https://www.cnblogs.com/lyshark
void MainWindow::on_pushButton_2_clicked()
{
    QString dlgTitle="輸入整數(shù)對(duì)話框";
    QString txtLabel="設(shè)置字體大小";
    int defaultValue=ui->plainTextEdit->font().pointSize();   // 現(xiàn)有字體大小
    int minValue=6, maxValue=50, stepValue=1;                 // 范圍(步長(zhǎng))
    bool flag=false;
    int inputValue = QInputDialog::getInt(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,stepValue,&flag);
    if (flag)
    {
        QFont font=ui->plainTextEdit->font();
        font.setPointSize(inputValue);
        ui->plainTextEdit->setFont(font);
    }
}

// 浮點(diǎn)數(shù)輸入對(duì)話框
void MainWindow::on_pushButton_3_clicked()
{
    QString dlgTitle="輸入浮點(diǎn)數(shù)對(duì)話框";
    QString txtLabel="輸入一個(gè)浮點(diǎn)數(shù)";
    float defaultValue=3.13;

    float minValue=0, maxValue=10000;  // 范圍
    int decimals=2;                    // 小數(shù)點(diǎn)位數(shù)

    bool flag=false;
    float inputValue = QInputDialog::getDouble(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,decimals,&flag);
    if (flag)
    {
        QString str=QString::asprintf("輸入了一個(gè)浮點(diǎn)數(shù):%.2f",inputValue);
        ui->plainTextEdit->appendPlainText(str);
    }
}

// 單選框條目選擇對(duì)話框
void MainWindow::on_pushButton_4_clicked()
{
    QStringList items;                        // 列表內(nèi)容
    items <<"優(yōu)秀"<<"良好"<<"合格"<<"不合格";    // 放入列表

    QString dlgTitle="條目選擇對(duì)話框";
    QString txtLabel="請(qǐng)選擇級(jí)別";
    int curIndex=0; //初始選擇項(xiàng)
    bool editable=false;                       // 是否可編輯
    bool flag=false;
    QString text = QInputDialog::getItem(this, dlgTitle,txtLabel,items,curIndex,editable,&flag);

    if (flag && !text.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(text);
    }
}

QFileDialog 對(duì)話框: 該對(duì)話框用于對(duì)文本的操作,例如打開文件,保存文件,選擇文件夾等,當(dāng)點(diǎn)擊選擇后,對(duì)話框會(huì)自動(dòng)提取出文件路徑。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 選擇單個(gè)文件對(duì)話框
void MainWindow::on_pushButton_clicked()
{
    QString curPath=QDir::currentPath();                                       // 獲取系統(tǒng)當(dāng)前目錄
//  QString  curPath=QCoreApplication::applicationDirPath();                   // 獲取應(yīng)用程序的路徑
    QString dlgTitle="選擇一個(gè)文件";                                             // 對(duì)話框標(biāo)題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)";  // 文件過(guò)濾器

    QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);

    if (!aFileName.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(aFileName);
    }
}

// 選擇多個(gè)文件對(duì)話框
// By : LyShark
// https://www.cnblogs.com/lyshark
void MainWindow::on_pushButton_2_clicked()
{
    // QString curPath=QCoreApplication::applicationDirPath();                // 獲取應(yīng)用程序的路徑
    QString curPath=QDir::currentPath();                                      // 獲取系統(tǒng)當(dāng)前目錄
    QString dlgTitle="選擇多個(gè)文件";                                            // 對(duì)話框標(biāo)題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)"; // 文件過(guò)濾器

    QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
    for (int i=0; i<fileList.count();i++)
    {
        // 循環(huán)將文件路徑添加到列表中
        ui->plainTextEdit->appendPlainText(fileList.at(i));
    }
}

// 選擇文件夾
void MainWindow::on_pushButton_3_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();    // 獲取應(yīng)用程序的路徑
    // QString curPath=QDir::currentPath();                    // 獲取系統(tǒng)當(dāng)前目錄

    // 調(diào)用打開文件對(duì)話框打開一個(gè)文件
    QString dlgTitle="選擇一個(gè)目錄";                             // 對(duì)話框標(biāo)題
    QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
    if (!selectedDir.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(selectedDir);
    }
}

// 保存文件對(duì)話框
void MainWindow::on_pushButton_4_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();                  // 獲取應(yīng)用程序的路徑
    QString dlgTitle="保存文件";                                              // 對(duì)話框標(biāo)題
    QString filter="文本文件(*.txt);;h文件(*.h);;C++文件(.cpp);;所有文件(*.*)"; // 文件過(guò)濾器
    QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    if (!aFileName.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(aFileName);
    }
}

到此這篇關(guān)于C/C++ Qt Dialog 對(duì)話框組件應(yīng)用的文章就介紹到這了,更多相關(guān)C++ 對(duì)話框組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ STL中一些常用算法總結(jié)

    C++ STL中一些常用算法總結(jié)

    都說(shuō)STL是數(shù)據(jù)容器與算法的高度組合,在前面的文章中我們介紹了常見的幾種容器,vector、list、map、deque等,今天我們?cè)賮?lái)介紹下STL中常用的一些算法,需要的朋友可以參考下
    2024-02-02
  • VS2022永久配置OpenCV開發(fā)環(huán)境的實(shí)現(xiàn)

    VS2022永久配置OpenCV開發(fā)環(huán)境的實(shí)現(xiàn)

    本文主要介紹了VS2022永久配置OpenCV開發(fā)環(huán)境的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vc提示unexpected end of file found的原因分析

    vc提示unexpected end of file found的原因分析

    這篇文章主要介紹了vc提示unexpected end of file found的原因分析,給出了幾點(diǎn)常見錯(cuò)誤原因的分析,需要的朋友可以參考下
    2015-05-05
  • c++實(shí)現(xiàn)解析zip文件的示例代碼

    c++實(shí)現(xiàn)解析zip文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用c++實(shí)現(xiàn)解析zip文件,并對(duì)流式文件pptx內(nèi)容的修改,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2023-12-12
  • C/C++中宏定義(#define)

    C/C++中宏定義(#define)

    #define命令是C語(yǔ)言中的一個(gè)宏定義命令,它用來(lái)將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串,該標(biāo)識(shí)符被稱為宏名,被定義的字符串稱為替換文本。接下拉通過(guò)本文給大家分享C/C++中宏定義(#define)知識(shí),需要的朋友參考下
    2017-02-02
  • C++實(shí)現(xiàn)raw_input的方法

    C++實(shí)現(xiàn)raw_input的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)raw_input的方法,通過(guò)C++來(lái)實(shí)現(xiàn)Python中發(fā)raw_input的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++ Boost PropertyTree解析INI文件詳解

    C++ Boost PropertyTree解析INI文件詳解

    Boost PropertyTree庫(kù)不僅可以解析JSON,XML格式,還可以直接解析INI格式文件。這篇文章就是為大家介紹一下如何通過(guò)Boost PropertyTree解析INI文件,需要的可以參考一下
    2022-01-01
  • 深入理解Java事務(wù)的原理與應(yīng)用

    深入理解Java事務(wù)的原理與應(yīng)用

    下面小編就為大家?guī)?lái)一篇深入理解Java事務(wù)的原理與應(yīng)用。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子最小操作數(shù)示例

    C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子最小操作數(shù)示例

    這篇文章主要為大家介紹了C++?LeetCode1769移動(dòng)所有球到每個(gè)盒子所需最小操作數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 數(shù)據(jù)結(jié)構(gòu)之位圖(bitmap)詳解

    數(shù)據(jù)結(jié)構(gòu)之位圖(bitmap)詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之位圖詳解,本文講解了位圖的基本知識(shí)、位圖的實(shí)現(xiàn)方法、位圖的應(yīng)用等內(nèi)容,需要的朋友可以參考下
    2014-08-08

最新評(píng)論