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

在职考研哪个网站做的好做网站公司高端

在职考研哪个网站做的好,做网站公司高端,泰安今天最新招聘信息,青岛城市建设档案馆网站前言 Qt中对话框QDialog是几乎每个项目都会用到的GUI窗口对象。本文通过讲解QDialog及其子类在项目中经常被用到的功能点#xff0c;帮助小伙伴们理解和掌握其使用方法。 QDialog QDialog是Qt对话框类树中的基类#xff0c;Qt为我们提供了很多QDialog子类#xff0c;即标…前言 Qt中对话框QDialog是几乎每个项目都会用到的GUI窗口对象。本文通过讲解QDialog及其子类在项目中经常被用到的功能点帮助小伙伴们理解和掌握其使用方法。 QDialog QDialog是Qt对话框类树中的基类Qt为我们提供了很多QDialog子类即标准对话框实现了丰富的对话框功能。下面我们先看一下QDialog本身需要关注的一些问题。 模态对话框 一句话描述模态对话框 除模态对话框外用户无法选择并操作其他窗口只有关闭了模态对话框用户才能操作其他窗口。 下面的代码用QDialog::exec函数实现了模态对话框请结合Qt中QDialog的类帮助文档阅读下面的代码 QDialog dlg; dlg.exec(); // 执行模态对话框等效于 QDialog dlg; dlg.setModel(true); // 设置为模态 dlg.show(); // 显示对话框原理上exec函数是阻塞执行的直到模态对话框关闭才返回可以看出exec内部有一个自己的消息循环一直在循环处理消息。用代码模拟如下 class QDialog { public:int exec(){show(); // 显示窗口m_event_loop.exec(); // 事件循环hide(); // 隐藏窗口return result(); // 返回退出码}private:QEventLoop m_event_loop; // 事件循环对象 }而调用show函数是不需要对话框关闭就会立即返回的相当于setVisible(true)仅仅设置了允许窗口显示的标记而已。先调用setModel(true)再调用show()仍然是立即返回的这种情况下模态对话框使用的消息循环是main函数中app.exec中的启动的应用全局消息循环。原理上尝试理解即可暂时不需要掌握在后面的文章中会有对消息循环QEventLoop的专门讲解。 使用场景 exec阻塞执行方式不会将本来可以在一个函数内实现的业务代码分散到多个函数中去。 比如下面的例子弹出对话框让用户输入名称然后校验用户输入的用户名是否正确在一个函数内即可完成此功能 class Test { public:void checkUsername(){QString name;MyDialog dlg; // MyDialog为我们自定义的QDialog子类// 用户点击取消按钮直接返回if (dlg.exec() QDialog::Rejected) {return;}name dlg.getName(); // 获取用户名if (name ! ABC) // 校验用户名{qDebug() Name Error!; // 用户名校验错误return;}else{qDebug() Pass; // 用户名校验正确}} }如果使用show会怎么样呢使用show实现同样的功能代码如下 class Test : public QObject {Q_OBJECT public:void showNameInputDialog(){ // 下面额外监听对话框关闭信号connect(m_dlg, SIGNAL(finished(int)), this, SLOT(slotDialogFinished(int)));m_dlg.setModel(true);m_dlg.show();}// 响应对话框关闭信号的槽void slotDialogFinished(int code){if (code QDialog::Rejected) // 用户点击取消按钮直接返回{return;}name m_dlg.getName(); // 获取用户名if (name ! ABC) // 校验用户名{qDebug() Name Error!;return;}else{qDebug() Pass; // 用户名校验正确}}private:// MyDialog为我们自定义的QDialog子类// 需要延长dlg的生命周期把exec例子中的函数内变量写成类的成员变量MyDialog m_dlg; }可以看到使用show来显示对话框不仅要使用信号槽还要添加成员变量、添加槽函数非常麻烦而且一个连续的业务流程代码被分散到了多个函数中。 exec()是开发中最常用的模块对话框调用方法。由上面的例子可知模态对话框一般用来在某个处理过程中请求用户输入内容或配置必要的处理参数。而且这样可以保持业务处理代码连续不分散。 非模态对话框 一句话描述非模态对话框 非模态对话框不会独占用户鼠标和键盘输入用户可以随时在其他窗口和非模态窗口之间切换操作。 非模态对话框一般用来实现悬浮窗口。非模态对话框会悬浮在父窗口上层父窗口通过构造函数的parent参数设置。即使点击了父窗口非模态对话框也会保持在父窗口上层变化仅仅是失去焦点。 非模态对话框的典型例子是使用文本编辑软件如notepad.exe进行文本编辑时悬浮的文本搜索框就是一种非模态对话框。 非模态对话框使用比较简单定义好对话框变量后直接调用成员函数show即可显示这里不做过多讲解。 QDialog子类 说完了QDialog下面开始介绍QDialog子类。 Qt标准对话框 根据使用频率大致对QDialog子类排序见下表读者可根据此顺序学习使用 子类描述QMessageBox信息对话框最常用用于显示提示信息、警告信息、询问信息、致命信息并接受用户选择下一步操作。QFileDialog文件对话框常用用于选择文件、文件夹。QInputDialog输入对话框用于获取字符串输入、数值输入、以及选择列表中的某一项。QColorDialog、QFontDialog颜色和字体对话框。QProgressDialog进度显示对话框。QErrorMessage错误信息显示对话框提供不再显示某条内容的消息的选项。QWizard向导对话框用于引导用户进行某个操作。 自定义QDialog子类 自定义QDialog子类是必备技能。很多情况下标准对话框不满足使用要求此时就需要我们自定义对话框实现响应的功能。 自定义对话框有以下几点需要说明。 1. done、accept、reject 这三个函数是自定义函数一定需要用到的函数用于控制以什么样的状态码退出对话框。 done函数用来退出对话框并设置退出码。 对于模态对话框done相当于 void QDialog::done(int code) {setResult(code); // 设置退出码if (isModel()) // 如果是模态对话框{m_event_loop.exit(code); // 退出消息循环}else{hide(); // 隐藏窗口} }done结束对话框内部消息循环done函数退出随后下一个消息循环中exec函数中的消息循环返回exec函数也退出最后返回到调用对话框的代码处。 accept相当于 done(QDialog::Accepted);reject相当于 done(QDialog::Rejected);2. 不要用exec的返回值来传递内容信息 exec的返回值可以用来传递退出码。由上述内容可知done、accept、reject可以用来退出对话框并设置退出码。 笔者在初次自定义对话框时总想着将对话框中的输入内容用exec返回。例如将用户在对话框中选择的列表项索引用done(index)来返回。这里明确告诉小伙伴们这样的用法是不提倡的。因为如果是字符串那怎么返回呢 正确的做法是使用done返回用户对编辑的确认状态即确认设置内容还是取消设置确认内容用accept取消设置用reject。这样一来自定义的QDialog类需要提供对话框数据获取接口当exec返回后再使用对话框对象实例调用数据获取接口获取用户编辑的数据。 举个简单的例子 class MyDialog : public QDialog { public:explicit MyDialog(QWidget *parent NULL);QString getName(){// 从界面输入框中获取用户输入内容return ui-lineEdit_name-text();}QString getPassword(){// 从界面输入框中获取用户输入内容return ui-lineEdit_password-text();}private:// 点击确认按钮响应void slotOkButtonClicked(){accept();}// 点击取消按钮响应void slotCancelButtonClicked(){reject();} }结语 本文代码略多粗略地讲解了Qt中对话框的类型和理解对话框工作原理的关键问题。细节的部分需要读者自己去实践文章中无法讲解得太过详细。讲解太过详细第一读起来费时费力倒不如花时间自己写代码尝试第二学习容易出现问题的地方是较难理解的地方细节不需要面面俱到 用到的时候再查就可以。学习Qt某个模块要先把握住某一个功能模块的运作机理、框架而不是一头钻进庞杂的内容里没有方向地去学习效率很低也很痛苦。 本文是Qt基础文章笔者想尽快写完Qt的基础部分除了基础还有很多东西需要掌握不能一直在基础上转圈圈。小伙伴们如果有疑问欢迎留言。如果问题很多笔者会考虑建一个讨论群尽自己能力帮助想要学习Qt的同学大家一起进步。 本文首发于微信公众号“Qt未来工程师”。
http://www.zqtcl.cn/news/976826/

相关文章:

  • 网页设计制作网站素材传奇代理平台
  • 公司建站网站软文营销方案
  • 成品短视频网站源码搭建免费温州外贸网站制作
  • 旅游公司网站建设pptwordpress 用户增强
  • wordpress 最新东莞seo技术培训
  • 上海微网站开发网站 选项卡 图标
  • 淘宝网站建设的目标什么做网站公司 营销
  • 360企业网站认证wordpress 个人照片
  • 韩国私人网站服务器创业做网站APP开发
  • 成都网站建设推来客网站系统报价wordpress 本地图片 图床
  • 跨境电商怎么做流程青岛网站建设seo
  • 怎么搭建网站平台网站建设相关文献
  • 网站前面的小图标怎么做wordpress文章页广告插件
  • 设计制作一个 个人主页网站淄博做网站的公司都有哪些
  • 10月哪个网站做电影票活动宁波设计公司有哪些
  • 网站建设的pest分析公司erp系统
  • 网站开发一般用哪个浏览器高端酒店网站模板
  • 响应式网站开发哪个好徐州关键字优化咨询
  • 企业建站都有什么网站宁波那家公司做网站好
  • 哪里有零基础网站建设教学培训网页制作要多少钱
  • 云南建站网站建设的编程技术
  • 知名的饰品行业网站开发wordpress镜像存储插件
  • 网站整体地图怎么做小榄公司网站建设
  • 体育西网站开发方案无锡锡山区建设局网站
  • 房地产 网站 欣赏建网站找谁
  • 网站创建一般创建哪种类型沈阳装修公司报价
  • 如何在网站后台做网页寻找赣州网站建设
  • 生态农庄网站模板志鸿优化网下载
  • 如何做企业网站广州企业宣传片
  • wordpress淘宝客建站舆情中心