一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C/C++ Qt Dialog 對話框組件應用技巧

C/C++ Qt Dialog 對話框組件應用技巧

2022-03-03 14:07lyshark C/C++

這篇文章主要介紹了C/C++ Qt Dialog 對話框組件應用,這里我將總結本人在開發過程中常用到的標準對話框的使用技巧,對C++ 對話框組件相關知識感興趣的朋友一起看看吧

Qt的對話框分為兩種形式,一種是標準對話框,另一種則是自定義對話框,在一般開發過程中標準對話框使用是最多的了,標準對話框一般包括 QMessageBox,QInputDialog,QFileDialog 這幾種,這里我將總結本人在開發過程中常用到的標準對話框的使用技巧。

Qt框架下,常用的標準對話框有下面這幾種:

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

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

#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消息框: 無選擇");
}

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

C/C++ Qt Dialog 對話框組件應用技巧

QMessageBox 退出事件: 彈窗組件還可以配合QCloseEvent實現事件通知機制,例如當窗體被關閉則提示用戶是否關閉窗體。

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

#include <QMessageBox>
#include <QCloseEvent>

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

// 窗口關閉時詢問是否退出
void MainWindow::closeEvent(QCloseEvent *event)
{
   QMessageBox::StandardButton result=QMessageBox::question(this, "確認", "確定要退出本程序嗎?",
                      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;
}

C/C++ Qt Dialog 對話框組件應用技巧

QInputDialog 對話框: 該對話框長用于輸入一段特殊的文本,浮點數,或者選擇一個列表框中的選項,該功能用于簡單的用戶交互場景。

#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;
}

// 文本輸入對話框
void MainWindow::on_pushButton_clicked()
{
    QString dlgTitle="輸入文字對話框";
    QString txtLabel="請輸入文件名";
    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);
    }
}

// 整數數值輸入對話框
// By : LyShark
// https://www.cnblogs.com/lyshark
void MainWindow::on_pushButton_2_clicked()
{
    QString dlgTitle="輸入整數對話框";
    QString txtLabel="設置字體大小";
    int defaultValue=ui->plainTextEdit->font().pointSize();   // 現有字體大小
    int minValue=6, maxValue=50, stepValue=1;                 // 范圍(步長)
    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);
    }
}

// 浮點數輸入對話框
void MainWindow::on_pushButton_3_clicked()
{
    QString dlgTitle="輸入浮點數對話框";
    QString txtLabel="輸入一個浮點數";
    float defaultValue=3.13;

    float minValue=0, maxValue=10000;  // 范圍
    int decimals=2;                    // 小數點位數

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

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

    QString dlgTitle="條目選擇對話框";
    QString txtLabel="請選擇級別";
    int curIndex=0; //初始選擇項
    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);
    }
}

C/C++ Qt Dialog 對話框組件應用技巧

QFileDialog 對話框: 該對話框用于對文本的操作,例如打開文件,保存文件,選擇文件夾等,當點擊選擇后,對話框會自動提取出文件路徑。

#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;
}

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

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

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

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

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

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

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

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

C/C++ Qt Dialog 對話框組件應用技巧

到此這篇關于C/C++ Qt Dialog 對話框組件應用的文章就介紹到這了,更多相關C++ 對話框組件內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/LyShark/archive/2021/11/24/15597187.html

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 无码乱人伦一区二区亚洲一 | 色哟哟哟在线精品观看视频 | 双性np玩烂了np欲之国的太子 | 久久精品视在线观看2 | 久久午夜一区二区 | 99九九成人免费视频精品 | 男人叼女人的痛爽视频免费 | 99久久香蕉 | 国产精品不卡 | 羞羞影院午夜男女爽爽影院网站 | 男女激情视频1000辣妞范 | jk制服喷水 | 国产91精品露脸国语对白 | 美女翘臀内疯狂进出 | 999任你躁在线精品免费不卡 | 校花被吃奶还摸下面 | 鄂州一家三口完整版免费 | 免费观看韩剧网站在线观看 | 国产亚洲福利一区二区免费看 | 欧美日韩中文字幕一区二区高清 | 天堂在线中文无弹窗全文阅读 | 国产老妇 | 国产精品suv| 男人狂躁女人下半身 | 日韩成本大片35分钟免费播放 | 娇小8一12xxxx第一次 | 亚色九九九全国免费视频 | 国产亚洲综合成人91精品 | 香蕉精品国产高清自在自线 | 91久久福利国产成人精品 | 亚洲精品动漫在线观看 | 国产欧美国产精品第一区 | 国产视频久久 | 免费在线影院 | 国产自一区 | 欧美影院一区二区 | 男生的j桶女人屁免费视频 男生操男生 | 亚洲网站大全 | 免费黄色小说 | 日本免费不卡在线一区二区三区 | 91啦丨porny丨蝌蚪 |