CCQt标准Dialog对话框组件应用
在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
Qt框架下,常用的标准对话框有下面这几种: QMessageBox 提示信息框 QInputDialog 基本输入对话框(文本输入,整数输入,浮点数输入,单选框输入) QFileDialog 文件选择对话框(选择文件,多选文件,保存文件)
QMessageBox 消息弹窗: 消息对话框用于提示用户,常见的有四种分别是:提示,警告,错误,确认,代码归纳如下所示。 #include "mainwindow.h" #include "ui_mainwindow.h" #include 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 保留所有版权"; QMessageBox::about(this, dlgTitle, strInfo); }
QMessageBox 退出事件: 弹窗组件还可以配合QCloseEvent实现事件通知机制,例如当窗体被关闭则提示用户是否关闭窗体。 #include "mainwindow.h" #include "ui_mainwindow.h" #include #include 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; }
QInputDialog 对话框: 该对话框长用于输入一段特殊的文本,浮点数,或者选择一个列表框中的选项,该功能用于简单的用户交互场景。 #include "mainwindow.h" #include "ui_mainwindow.h" #include #include 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); } }
QFileDialog 对话框: 该对话框用于对文本的操作,例如打开文件,保存文件,选择文件夹等,当点击选择后,对话框会自动提取出文件路径。 #include "mainwindow.h" #include "ui_mainwindow.h" #include 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; iplainTextEdit->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); } }
梦幻的新疆新疆是一本大书,以天山为书脊翻开,昆仑山写满数千年的神话,塔里木河绵延的是故事线索,星罗棋布的绿洲是镶嵌的文明密码。这里汇聚了除了海洋以外的几乎所有的地质地貌,多元一体,是世人见到
2018年普吉岛沉船事故47名中国游客丧生,一家五口仅剩一人普吉岛沉船事故文瞭望LW前言2018年7月5日下午17点45左右,两艘载有127名中国游客船只返回普吉岛途中,突遇特大暴风雨,分别在珊瑚岛和梅通岛发生倾覆。该沉船事故所造成的中国游
名副其实的长江第一湾,从此长江一路向东,成了中华民族的父亲河黄河自青藏高原奔流而下,因为遇到了阿尼玛卿山的阻挡,所以拐下了第一道大弯,金沙江是长江的上游,依然是从青藏高原奔流而下,在丽江的石鼓镇拐下了父亲河的第一道大弯。大江大河所拐出的大弯
2022。2。1,阴,小雨昨晚虽然睡得很迟,但习惯了早起,六点就睡不着了,起床洗漱完毕,已经是七点半了,决定下楼到塔子山公园走一趟。外面淅淅沥沥地下起了小雨,远处濛濛笼笼,如烟似雾。公园里隅尔遇见一两个晨炼
欧洲行日记时尚浪漫之都巴黎和美丽的赛纳河我是女人,所以,当提到巴黎时,我最先想到的是巴黎时装和巴黎的化妆品。巴黎是继纽约,伦敦和东京之后的世界第四大国际大都市,也有的说它是世界第一大都市。巴黎还被称为时尚之都,浪漫之都。
遇间播报广东周边度假好去处惠林庄园,远离都市的隐世秘境生活需适当放慢脚步重新邂逅蓬勃的自己陶冶在绿野仙踪的美好置身在温暖的温泉怀抱里寻觅到了向往中的生活今天给大家推荐广东周边游的度假好去处惠州惠州庄园,一起来看下这里的游玩攻略吧它最大
什么车能够挑战冰雪迷宫和千里极寒?不同于以往的冰雪试驾,千里极寒挑战的难度一重接一重。(微信公号CNWAUTO)从长白山向西北方向600多公里,是吉林省另一个极具人气的风景所在。尽管天寒地冻,一路所见是千里冰封,万
斑斓的小城二连浩特(散文)二连浩特是位于内蒙古正北的一个边境小城。去二连浩特看看不是一天两天的梦想。但是,真正决定动身的是上火车前的两个小时。进入九月份以来,我一直拿不定主意十一去西安还是去二连浩特。九月二
申请美国签证,银行存款不佳,能从其他地方凑足吗?实操经验分享10年美国签证,相信绝大多数出过国的伙伴们,都想拥有,这里面我就不想累赘10年美签为啥好,也不跟部分人去抬杠,老胡就简单给大家列举几个理由10年美国签证含金量高的理由1可以免签去4
网友评出国内最安逸的避寒城市,看看你去过几个冬天,有人想玩雪便一路向北,也有人想找个四季如春的地方安逸过冬,临近春节,天气也愈发寒冷,国内很多城市最低温度已经到了零下10度。这个季节北方外面冷,南方家里冷,小豆挑选了几个国内
只出不进,却不干涸?长白山天池的水靠什么支撑?世界之大,无奇不有。而所有奇怪的景象对于生物都有着莫名的吸引力,尤其是像人类这种高等生物。我们也正是在解决了一个又一个奇怪的现象后,不断进步的。而在一系列奇怪的现象中,又有许多形成