Qt 常用类 (10)—— QDialog

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

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



        构造

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

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



        模态性

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

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

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

void setWindowModality(Qt::WindowModality windowModality);

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

         1)Qt::NonModal:非模态。

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

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


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

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

        执行与结果

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

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

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

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

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

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

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

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


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

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


        

         打开

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

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

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



              
        

        

   

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt,QDialog是用于创建对话框窗口的基。对话框是一种常见的用户界面元素,用于与用户进行交互,通常用于显示信息、接收输入或进行选择。 QDialog提供了创建和管理对话框窗口的功能,包括设置窗口标题、大小、位置、样式等。它还提供了与对话框相关的一些常见功能,如按钮、文本框、标签等,以便在对话框显示和接收用户输入。 您可以通过继承QDialog来创建自定义的对话框窗口,并在其添加自定义的UI组件和逻辑。您可以重写QDialog的方法,以响应用户的操作或实现特定的行为。 以下是一些常见的QDialog的用法和功能: 1. 设置对话框标题:使用`setWindowTitle()`方法设置对话框的标题。 2. 设置对话框大小:使用`resize()`方法设置对话框的大小。 3. 添加UI组件:使用布局管理器(如QVBoxLayout、QHBoxLayout等)将各种UI组件(如QPushButton、QLineEdit等)添加到对话框。 4. 响应用户操作:通过连接信号和槽函数,实现对用户操作的响应。例如,当用户点击按钮时,可以执行相应的逻辑。 5. 获取用户输入:使用适当的UI组件(如QLineEdit)来接收用户输入,并在需要时获取其值。 6. 显示对话框:使用`exec()`方法或`show()`方法显示对话框。`exec()`方法会以模态方式显示对话框,阻塞其他窗口的操作,直到对话框关闭。`show()`方法以非模态方式显示对话框,允许用户同时操作其他窗口。 通过使用QDialog,您可以创建各种型的对话框,如消息框、输入框、文件选择框等,以满足您的应用程序需求。 希望这些信息能够帮助您理解和使用QDialog。如需更详细的信息和示例代码,请参考Qt官方文档:https://doc.qt.io/qt-5/qdialog.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值