• Qt 常用类 (10)—— QDialog


            QDialog 类代表对话框。对话框一般用来实现那些只是暂时存在的用户界面。对话框是独立的窗口,但通常它也有父窗口,当对话框显示时,默认的位置在父窗口的中央。从外观上来看,对话框一般没有最大化、最小化按钮。

            对话框有模态和非模态两种形式。非模态对话框的的行为和使用方法都类似于普通的窗口。模态对话框则有所不同,当模态对话框显示时,其他窗口将全部进入非激活状态,不能接受键盘和鼠标事件。模态的方式又可以分为两种,一种是对整个应用程序模态,这时它的出现将导致程序中的所有窗口失去响应;另一种是对窗口模态,这时仅仅会导致它所在的整个窗口树失去响应。  

            构造

            QDialog 类的构造函数与 QWidget 类形式相同:

    1. QDialog (QWidget *parent = 0, Qt::WindowFlags f = 0);  
    QDialog (QWidget *parent = 0, Qt::WindowFlags f = 0);

            模态性

            用下面的成员函数可将对话框设为模态:

    1. void setModal(bool modal);    // 设置对话框的模态性  
    void setModal(bool modal);    // 设置对话框的模态性


             当参数 model 为 true 时,对话框设为模态,否则设为非模态。如果设为模态,则默认是对整个应用程序模态的。要设为对窗口模态,则需要用以下函数:

    1. void setWindowModality(Qt::WindowModality windowModality);  
    void setWindowModality(Qt::WindowModality windowModality);


             实际上它是从 QWidget 类继承过来的一个成员函数,其中 Qt::WindowModality 是一个枚举类型,有以下取值。

             1)Qt::NonModal:非模态。

             2)Qt::WindowModal:窗口模态。

             3)Qt::ApplicationModal:应用程序模态。

             与模态性相关的成员函数还有以下两个:

    1. Qt::WindowModality windowModality() const;    // 得到窗口的模态性  
    2. bool isModel() const;                                  // 判断窗口是否为模态的  
    Qt::WindowModality windowModality() const;    // 得到窗口的模态性
    bool isModel() const;                                  // 判断窗口是否为模态的

            执行与结果

            下面这个函数将以模态方式显示对话框:

    1. int exec();     // 这是一个槽  
    int exec();     // 这是一个槽


            同时它也是一个槽。这个函数不管对话框的模态性如何,总是显示模态对话框。调用这个函数的代码将阻塞直到对话框被关闭,返回值表示对胡框的结果。注意这个函数总是在其他窗口的代码中调用,一般不在对话框自己的代码中使用。

            对话框的结果与下面的函数有关:

    1. virtual void done(int r);    // 关闭对话框并返回结果 r,这是一个槽。  
    virtual void done(int r);    // 关闭对话框并返回结果 r,这是一个槽。


            这时一个槽,它将使对话框关闭,使对 exec 函数的调用返回。参数 r 是整数值,但最好使用 QDialog::DialogCode 枚举类型所定义的两个值。

            1)QDialog::Accepted:表示确定。

            2)QDialog::Rejected:表示取消。

            对话框通常有一个确定按钮和一个取消按钮,它们能使对话框关闭并返回相应的值。为了与按钮的 clicked() 信号连接,需要用到以下的槽:

    1. virtual void accept();    // 槽,等价于 done(QDialog::Accepted)  
    2. virtual void reject();      // 槽,等价于 done(QDialog::Rejected)  
    virtual void accept();    // 槽,等价于 done(QDialog::Accepted)
    virtual void reject();      // 槽,等价于 done(QDialog::Rejected)



            

             打开

             下面这个函数将以对窗口模态的方式显示对话框:

    1. void open();    // 这是一个槽  
    void open();    // 这是一个槽


             它也是一个槽。与 exec 函数不同的是,open 函数将立刻返回而不是等待对话框关闭。它一般用在需要显示模态对话框但又要继续进行工作的场合,比如一个进度对话框。这时候,需要在工作处理过程中间歇性地调用 QApplication 对象的 processEvents 成员函数,否则对话框的事件将的不到处理

  • 相关阅读:
    Android 开发工具类 19_NetworkStateReceiver
    Android 开发工具类 18_NetWorkUtil
    Sticky Footer (让页脚永远停靠在页面底部,而不是根据绝对位置)
    min-height最小高度的实现(兼容IE6、IE7、FF)(解决IE6不兼容min-height)
    不同浏览器设置背景透明度
    讨论内外边距对行内元素是否起作用,则要对行内替换元素和行内非替换元素分别讨论:
    超链接访问过后hover样式就不出现的问题
    解决:子元素设置margin-top,父元素也受影响的问题
    制作0.5px像素的细条
    去掉inline-block元素间隙的几种方法
  • 原文地址:https://www.cnblogs.com/muyuhu/p/2741830.html
Copyright © 2020-2023  润新知