news 2026/4/23 15:31:29

QT中,QFileDialog,QColorDialog,QFontDialog,QInputDialog对话框的简单使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT中,QFileDialog,QColorDialog,QFontDialog,QInputDialog对话框的简单使用

定义BuiltInDialog.h

#ifndef BUILTINDIALOG_H #define BUILTINDIALOG_H #include <QDialog> #include <QTextEdit> #include <QPushButton> #include <QFileDialog> class QTextEdit; class QPushButton; QT_BEGIN_NAMESPACE namespace Ui { class BuiltInDialog; } QT_END_NAMESPACE class BuiltInDialog : public QDialog { Q_OBJECT public: BuiltInDialog(QWidget *parent = nullptr); ~BuiltInDialog(); private: QTextEdit *textEditDisplay; QPushButton *filePushButton; QPushButton *colorPushButton; QPushButton *fontPushButton; QPushButton *inputPushButton; QPushButton *closePushButton; QPushButton *progressPushButton; int num; private slots: void slotFile(); void slotColor(); void slotFont(); void slotInput(); void slotProgress(); }; #endif // BUILTINDIALOG_H

实现BuiltInDialog.cpp

#include "builtindialog.h" #include "ui_builtindialog.h" #include <QTextStream> #include <QColorDialog> #include <QFontDialog> #include <QInputDialog> #include <QProcess> #include <QProgressDialog> #include <windows.h> #include <QVBoxLayout> BuiltInDialog::BuiltInDialog(QWidget *parent) : QDialog(parent) { num = 0; textEditDisplay = new QTextEdit(); filePushButton = new QPushButton("打开"); colorPushButton = new QPushButton("颜色"); fontPushButton = new QPushButton("字体"); inputPushButton = new QPushButton("保存"); closePushButton = new QPushButton("关闭"); progressPushButton = new QPushButton("进度"); QVBoxLayout *rightLayout = new QVBoxLayout(); rightLayout->addWidget(filePushButton); rightLayout->addWidget(colorPushButton); rightLayout->addWidget(fontPushButton); rightLayout->addWidget(inputPushButton); rightLayout->addWidget(progressPushButton); rightLayout->addWidget(closePushButton); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(textEditDisplay); mainLayout->addLayout(rightLayout); setLayout(mainLayout); connect(filePushButton,SIGNAL(clicked()),this,SLOT(slotFile())); connect(colorPushButton,SIGNAL(clicked()),this,SLOT(slotColor())); connect(fontPushButton,SIGNAL(clicked()),this,SLOT(slotFont())); connect(inputPushButton,SIGNAL(clicked()),this,SLOT(slotInput())); connect(progressPushButton,SIGNAL(clicked()),this,SLOT(slotProgress())); connect(closePushButton,SIGNAL(clicked()),this,SLOT(close())); } BuiltInDialog::~BuiltInDialog() { } void BuiltInDialog::slotFile() { QString str = QFileDialog::getOpenFileName(this, tr("open file dialog"), QDir::home().path(), "Text files(*.txt)"); QFile file(str); if(!file.open(QIODevice::ReadWrite)){ return ; } QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); num++; textEditDisplay->append(line); } } void BuiltInDialog::slotColor() { QPalette palette = textEditDisplay->palette(); QColor color = QColorDialog::getColor(palette.color(QPalette::Text),this); if(color.isValid()){ palette.setColor(QPalette::Text,color); textEditDisplay->setPalette(palette); } } void BuiltInDialog::slotFont() { bool ok; QFont font = QFontDialog::getFont(&ok); if(ok){ textEditDisplay->setFont(font); } } void BuiltInDialog::slotInput() { bool ok; QString filePath = QInputDialog::getText(this,tr("Input Dialog"),tr("InputSavePath:"),QLineEdit::Normal,QDir::home().dirName(),&ok); if(!ok) return; QFile file(filePath); if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){ return ; } QTextStream out(&file); QString a = textEditDisplay->toPlainText(); out << a << "\n"; } void BuiltInDialog::slotProgress() { QProgressDialog *progressDialog = new QProgressDialog(this); QFont font("ZYSong18030",12); progressDialog->setFont(font); progressDialog->setWindowModality(Qt::WindowModal); progressDialog->setMinimumDuration(10); progressDialog->setWindowTitle(tr("Copying.....")); progressDialog->setCancelButtonText(tr("Cancel")); progressDialog->setRange(0,num); for(int i = 1;i < num;i++){ progressDialog->setValue(i); qApp->processEvents(); Sleep(1); if(progressDialog->wasCanceled()) return ; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:01:19

2025年WLED完全指南:智能照明系统快速部署实战

2025年WLED完全指南&#xff1a;智能照明系统快速部署实战 【免费下载链接】WLED Control WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi! 项目地址: https://gitcode.com/gh_mirrors/wl/WLED WLED作为目前最流行的ESP8266/ESP3…

作者头像 李华
网站建设 2026/4/22 19:38:11

Python自动化神器PyAutoGUI:告别996的程序员自救指南

Python自动化神器PyAutoGUI&#xff1a;告别996的程序员自救指南 【免费下载链接】pyautogui asweigart/pyautogui: 是一个用于自动化图形用户界面操作的 Python 库。适合在 Python 应用程序中实现自动化操作&#xff0c;例如自动点击、拖动、输入文字等。特点是提供了简单的 A…

作者头像 李华
网站建设 2026/4/23 9:50:29

芝麻粒-TK:智能自动化蚂蚁森林能量收取的终极解决方案

芝麻粒-TK&#xff1a;智能自动化蚂蚁森林能量收取的终极解决方案 【免费下载链接】Sesame-TK 芝麻粒-TK 项目地址: https://gitcode.com/gh_mirrors/ses/Sesame-TK 在现代快节奏生活中&#xff0c;你是否经常因为忘记收取蚂蚁森林能量而感到懊恼&#xff1f;或者因为工…

作者头像 李华
网站建设 2026/4/23 9:59:16

终极指南:如何用智能知识收集工具构建个人数字图书馆

终极指南&#xff1a;如何用智能知识收集工具构建个人数字图书馆 【免费下载链接】obsidian-clipper Highlight and capture the web in your favorite browser. The official Web Clipper extension for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/obsidia/obsidi…

作者头像 李华
网站建设 2026/4/22 10:51:18

Vita3K模拟器:电脑畅玩PSVita游戏的终极方案

Vita3K模拟器&#xff1a;电脑畅玩PSVita游戏的终极方案 【免费下载链接】Vita3K Experimental PlayStation Vita emulator 项目地址: https://gitcode.com/gh_mirrors/vi/Vita3K 想要在个人电脑上重温PlayStation Vita的经典游戏&#xff1f;Vita3K这款革命性的开源模拟…

作者头像 李华
网站建设 2026/4/23 9:58:34

Vita3K调试终极解决方案:5个技巧快速定位游戏崩溃问题

Vita3K调试终极解决方案&#xff1a;5个技巧快速定位游戏崩溃问题 【免费下载链接】Vita3K Experimental PlayStation Vita emulator 项目地址: https://gitcode.com/gh_mirrors/vi/Vita3K 当您在Vita3K模拟器中投入数小时游戏后突然遭遇黑屏闪退&#xff0c;或是在关键…

作者头像 李华