zoukankan      html  css  js  c++  java
  • Qt——消息对话框的设计

    1.消息对话框是什么

    消息对话框(MessageBox)提供了一个模态对话框,用来通知用户某些信息,或者用来询问用户一个问题并获得一个答复。

    先看下面2张图——

    第一张图是网易云音乐的界面截图,在删除歌单时,防止用户误操作,弹出了一个提示,提醒用户确认删除歌单;

    第二张图是Photoshop中,用户输入的颜色值不合法之后弹出的提示框,告知用户输入的颜色值要求在000000和ffffff直接。

    由此大概可以知道消息对话框有哪些作用了,它可以作为删除保护框,或提示用户某些信息等等。

    在Qt中有一个QMessageBox类,功能很全面,但缺点是用户很难甚至无法在它的基础上设置自己想要的界面样式。

    所以有必要自己设计一个消息对话框了。

    2.设计思路

    先看一下最后的界面需要做成什么样子:

    一个删除保护的对话框,它包括下面几个部分:标题、关闭按钮、内容文字、确定和删除按钮。

    按照使用qt做界面的一般方法,就是建立信号槽,然后点击按钮时发出信号作出响应,但是这样做有一个很大的缺点:写代码时必须要把确定或取消后的操作写到相应的槽函数里。也就是在一个函数中打开对话框,在另一个函数里进行操作,很不方便。

    在Qt中QMessageBox有如下用法:

    int ret = QMessageBox::warning(this, tr("My Application"),
                                   tr("The document has been modified.
    "
                                      "Do you want to save your changes?"),
                                   QMessageBox::Save | QMessageBox::Discard
                                   | QMessageBox::Cancel,
                                   QMessageBox::Save);
    
    switch (ret) {
      case QMessageBox::Save:
          // Save was clicked
          break;
      case QMessageBox::Discard:
          // Don't Save was clicked
          break;
      case QMessageBox::Cancel:
          // Cancel was clicked
          break;
      default:
          // should never be reached
          break;
    }
    

    调用静态函数打开对话框。对话框是模态的,用户点击确定或取消等按钮之后界面关闭,并获得一个返回值ret,根据返回值进行后续的操作。

    3.具体实现

    定义一个 静态函数 ,在静态函数中创建并显示消息对话框。

    然后用 QEventLoop 使程序停止执行后面的代码。

    用户点击确定或取消按钮之后退出eventloop,返回一个值并关闭对话框。

    使用方法如下:

    SimpleMsgBox::ButtonRole role = SimpleMsgBox::warning(this, "删除", "确定删除?");
    if (role = SimpleMsgBox::Yes)
    {
    	//...
    }
    else
    {
    	//...
    }
    

    在此基础上,可以继续扩展,使它的功能更丰富。

    the end.

  • 相关阅读:
    PSP ISO游戏运行必备工具:ISO TOOL 1.970 功能一览&图文教程
    Linux防火墙(原书第3版) 电子书籍
    iptables的相关概念和数据包的流程(图)
    oracle数据库远程连接服务器配置tnsnames
    编程感悟
    工作任务三 打印表单数据
    UltraWebTree的使用心得
    DropDownList应用
    使用UltraWebTree时,如何在刷新后展开之前选中的节点,并绑定相关数据
    webgrid 添加行是不允许相同
  • 原文地址:https://www.cnblogs.com/hellovenus/p/5540049.html
Copyright © 2011-2022 走看看