首页 > 作文

C/C++ Qt Dialog 对话框组件应用技巧

更新时间:2023-04-03 22:58:41 阅读: 评论:0

在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->tupui(this);}mainwindow::~mainwindow(){    delete ui;}// by : lyshark// /d/file/titlepic/ 弹出各种messageboxvoid 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,qmessagexcel高级筛选ebox::yes|qmessagebox::no |qmessagebox::cancel,defaultbtn);    if (result==qmessagebox::yes)        ui->plaintextedit->appendplaintext("question消息框: yes 被选择");    el if(result==qmessagebox::no)        ui->plaintextedit->appendplaintext("question消息框: no 被选择");    el if(result==qmessagebox::cancel)        ui->plaintextedit->appendplaintext("question消息框: cancel 被选择");    el        ui->plaintextedit->appendplaintext("question消息框: 无选择");}// 弹出关于提示void mainwindow::on_pushbutton_2_clicked(){    qstring dlgtitle="about 消息框";    qstring strinfo="我开发的数据查看软件 v1.0 \n 保留所有版权";    qmessagebox::about(this, dlgtitle, strinfo);}

qmessagebox 退出事件: 弹窗组件还可以配合qcloevent实现事件通知机制,例如当窗体被关闭则提示用户是否关闭窗体。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <qmessagebox>#include <qcloevent>mainwindow::mainwindow(qwidget *parent) :qmainwindow(parent),ui(new ui::mainwindow){    ui->tupui(this);}// 窗口关闭时询问是否退出void mainwindow::cloevent(qcloevent *event){   qmessagebox::standardbutton result=qmessagebox::question(this, "确认", "确定要退出本程序吗?",                      qmessagebox::yes|qmessagebox::no |qmessagebox::cancel,                      qmessagebox::no);    if (result==qmessagebox::yes)        event->accept();    el        event->ignore();}// by : lyshark// https://www.cnblogs.com/lysharkmainwindow::~mainwindow(){    delete ui;}

qinputdialog 对话框: 该对话框长用于输入一段特殊的文本,浮点数,或者选择一个列表框中的选项,该功能用于简单的用户交互场景。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <qlineedit>#include <qinputdialog>mainwindow::mainwindow(qwidget *parent) :qmainwindow(parent),ui(new ui::mainwindow){    ui->tupui(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 = fal;    qstring text = qinputdialog::gettext(this, dlgtitle,txtlabel, echomode,defaultinput, &flag);    if (flag && !text.impty())    {        ui->plaintextedit->appendplaintext(text);    }}// 整数数值输入对话框// by : lyshark// https://www.cnblogs.com/lysharkvoid mainwindow::on_pushbutton_2_clicked(){    qstring dlgtitle="输入整数对话框";    qstring txtlabel="设置字体大小";    int defaultvalue=ui->plaintextedit->font().pointsize();   // 现有字体大小    int minvalue=6, maxvalue=50, stepvalue=1;                 // 范围(步长)    bool flag=fal;    int inputvalue = qinputd国防大学招生ialog::getint(this, dlgtitle,txtlabel,defaultvalue, minvalue,maxvalue,stepvalue,&flag);    if (flag)    {        qfont font=ui->plaintextedit->font();        font.tpointsize(inputvalue);        ui->plaintextedit->tfont(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=fal;    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=fal;                       // 是否可编辑    bool flag=fal;    qstring text = qinputdialog::getitem(this, dlgtitle,txtlabel,items,curindex,editable,&flag);    if (flag && !text.impty())    {        ui->plaintextedit->appendplaintext(text);    }}

qfiledialog 对话框: 该对话框用于对文本的操作,例如打开文件,保存文件,选择文件夹等,当点击选择后,对话框会自动提取出文件路径。

#include "mainwindow.h"#include "ui_mainwindow.h"#include <qfiledialog>mainwindow::mainwindow(qwidget *parent) :qmainwindow(parent),ui(new ui::mainwindow){    ui->tupui(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.impty())    {        ui->plaintextedit->appendplaintext(afilename);    }}// 选择多个文件对话框// by : lyshark// https://www.cnblogs.com/lysharkvoid 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 lecteddir=qfiledialog::getexistingdirectory(this,dlgtitle,curpath,qfiledialog::showdirsonly);    if (!lecteddir.impty())    {        ui->plaintextedit->appendplaintext(lecteddir);    }}// 保存文件对话框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 (!afi女狼俱乐部插曲lename.impty())    {        ui->plaintextedit->appendplaintext(afilename);    }}

文章出处:https://www.cnblogs.com/lyshark
版权声明: 本博客文章与代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章 [均为原创] 作品,转载请 [添加出处] ,您添加出处是我创作的动力!

博主警告:如果您恶意转载本人文章,则您的整站文章,将会变为我的原创作品,请相互尊重!

到此这篇关于c/c++qtdialog对话框组件应用的文章就介绍到这了,更多相关c++对话框组件内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-03 22:58:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/90ac4706608ba55ab6772381ed65ae21.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C/C++ Qt Dialog 对话框组件应用技巧.doc

本文 PDF 下载地址:C/C++ Qt Dialog 对话框组件应用技巧.pdf

标签:对话框   文件   消息   路径
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图