当前位置: 首页 > news >正文

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 ; } }
http://www.jsqmd.com/news/207878/

相关文章:

  • STM32CubeMX点亮LED灯实战案例:含引脚分配技巧
  • GitPoint移动端安全认证终极指南:OAuth保护与用户隐私完整方案
  • 缓存革命:Ristretto如何用智能门禁系统重塑内存管理
  • Ueli:终极跨平台快捷启动器,彻底改变你的工作方式
  • GameNative应用下载限制:从灰色按钮到流畅体验的完整指南
  • Redpill Recovery:群晖NAS系统崩溃的终极自救指南
  • OpenSCAD终极指南:从代码到3D模型的完全解析
  • React Stockcharts 数据适配器深度解析:高性能实时数据处理终极方案
  • 终极指南:快速掌握PointMLP点云处理MLP框架
  • Hunyuan3D-1终极指南:从零开始掌握AI 3D生成技术
  • Keil5编译器5.06下载后的首次使用操作指南
  • Paper服务器防作弊实战指南:从零构建安全游戏环境
  • 实时数据架构压测方案:性能瓶颈分析+优化策略+实战经验
  • foobox-cn终极美化方案:从单调到惊艳的音乐播放体验革命
  • GLM4.5-V视觉问答模型微调教程:ms-swift一站式解决方案
  • 如何快速搭建高效的Nominatim开发环境?
  • 算法能力速成秘籍:LeetCode-Solutions高效学习全攻略
  • 前端开发规范终极解决方案:彻底消除团队代码不一致性
  • Ghost Downloader 3:AI智能加速的跨平台下载解决方案探索
  • 数据脱敏处理流程:保护用户隐私的合规性实践
  • AI代码文档自动化:告别手动编写,3步实现智能文档生成
  • 突破Windows远程桌面单用户限制的终极解决方案
  • Camoufox:终极反侦测浏览器完全指南
  • Camoufox终极指南:如何配置最强反检测浏览器实现数据采集
  • Cemu模拟器完整配置手册:从入门到精通的性能调优指南
  • 模型版本管理规范:ms-swift中模型迭代的生命周期控制
  • Stockfish.js:浏览器端国际象棋AI引擎终极指南
  • Lance格式性能终极指南:如何实现100倍数据加载加速
  • 黑群晖引导终极指南:从零开始快速部署完整教程
  • 5步搞定Vita3K崩溃:GDB调试的强力秘籍