Qt之QDialog

QDialog特性:

  对话框是一个顶级窗口,大多数用于临时任务和短暂交流。QDialog可能是modal或者modeless;QDialog还可以提供一个返回值;QDialog可以提供default buttons;最后QDialog用setSizeGripEnabled()还是可以在低层次中心提供一个QSizeGrip类;

  QDialog或者其他有Qt::Dialog类型的widget(即QWidget::setWindowFlag(Qt::Dialog)这样的)使用父类widget与其他Qt类是不同的,因为对话框经常是一个顶级的widget,但是如果它有parent的话,对话框默认位置将是在顶级widget的中心位置,同时它也将共享parent的taskbar的入口;

  使用QWidget::setParent()将会改变QDialog widget的属性,如果这么设置之后将需要重新指定window-systems窗口属性(尤其是它将复位Qt::Dialog标志位),所以在将QDialog放在其他widget中时需要重新设置Qt::WindowFlags。

(1)  Modal Dialogs

  Modal Dialog可以阻塞其他窗口的输入,Dialogs可以是application modal(默认值)或者是window modal。

  绝大数调用modal dialog的方式是调用exec(),当dialog关闭的时候,exec()将会提供一个返回值。为了得到合适的值,一般将OK连接到accep()槽函数,Cancel连接到reject()槽函数。甚至你可以用done()槽函数来选择Accepted或者Rejected。此外还有种方式,就是调用setModal(true)或者setWindowModality(),然后再调用show(),与exec()不同的是show()会立即返回值,exec()只有在DIalog关闭后才会返回。但是这种方式对于长时间运行的过程式dialog是非常有用的,如果调用show()和setModal(true)来执行长时间的动作,还必须使用QApplication::processEvents()让dialog与使用者持续对话。

(2)  Modaless Dialogs

  如果在hide()之后调用show()函数,dialog将会出现在最开始的位置。如果想维持之前的位置,需要在closeEvent()中保存框体的坐标,然后move()去,之后再调用show()。

(3)  default button

  默认按钮用来告知用户已接受dialog的设置,并且希望关闭dialog,使用QPushbutton::setDefault(),QPushButton::isDefault()和QPushButton::autoDefault()来设置和控制默认按钮。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值