DtkWidget
DTK Widget module
|
可以使用 DAbstractDialog 类创建符合 DDE 风格的对话框窗口. 更多...
Public 类型 | |
enum | DisplayPosition { Center , TopRight } |
对话框显示位置 更多... | |
enum | DisplayPostion { DisplayCenter = Center , DisplayTopRight = TopRight } |
Public 槽 | |
void | moveToCenter () |
将对话框移动至屏幕中央或其父控件的中央 | |
void | moveToTopRight () |
将对话框移动至屏幕右上角或其父控件的右上角 | |
void | moveToCenterByRect (const QRect &rect) |
移动对话框到给定rect 区域的中央。rect 是移动对话框要参照的QRect 区域 | |
void | moveToTopRightByRect (const QRect &rect) |
移动对话框到给定rect 区域的右上角。rect 是移动所需要参照的QRect 位置。 | |
void | setDisplayPosition (DisplayPosition displayPosition) |
设置对话框显示位置 | |
信号 | |
void | sizeChanged (QSize size) |
窗口大小发生改变 | |
Public 成员函数 | |
DAbstractDialog (QWidget *parent=nullptr) | |
构造一个DAbstractDialog实例 | |
DAbstractDialog (bool blurIfPossible, QWidget *parent=nullptr) | |
构造一个 DAbstractDialog 实例 | |
DisplayPosition | displayPosition () const |
void | move (const QPoint &pos) |
将窗口移动到指定坐标 | |
void | move (int x, int y) |
将窗口移动到指定坐标 | |
void | setGeometry (const QRect &rect) |
构造一个矩形 | |
void | setGeometry (int x, int y, int width, int height) |
Protected 成员函数 | |
void | mouseMoveEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标移动事件 | |
void | mousePressEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标点击事件 | |
void | mouseReleaseEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标释放事件 | |
void | resizeEvent (QResizeEvent *event) Q_DECL_OVERRIDE |
窗口大小改变事件 | |
void | showEvent (QShowEvent *event) override |
窗口显示事件,如果收到过鼠标移动事件不再使用自动布局 | |
DAbstractDialog (DAbstractDialogPrivate &dd, QWidget *parent=nullptr) | |
属性 | |
DisplayPosition | displayPosition |
获取对话框显示位置 | |
可以使用 DAbstractDialog 类创建符合 DDE 风格的对话框窗口.
对话框是一个用于供用户进行短暂周期的任务交互的顶层窗体。 DDialogs 对话框可以是模态的或非模态的。 对话框可以提供一个 return "返回值", 并且对话框可以拥有 default "默认按钮"。
一个 {模态} (modal)对话框可以阻止对模态对话框之外的原可见窗体的操作,如请求用户输入文件名的对话框或是对应用程序本身进行设置的对话框就常是模态对话框。 模态对话框可以是Qt::ApplicationModal
"应用模态" 的(默认),也可以是 Qt::WindowModal
"窗体模态" 的。 当应用模态对话框出现后,用户必须完成与对话框的交互并关闭对话框才能继续与应用的其他窗体进行交互。
窗体模态对话框则仅仅阻止用户与这个对话框的父窗体进行交互而不影响这个父窗体之外的其他窗体。
显示模态对话框的常见做法是调用exec()
。当对话框被用户关闭时,exec()
会提供一个有用的return "返回值" 。 通常,需要关闭一个对话框并使其返回期望的值时,我们可以把默认按钮,如 OK
确认按钮连接到 accept()
槽,并把 Cancel
取消按钮连接到reject()
槽。当然,也可以调用 done()
槽并传递 Accepted
或是 Rejected
达到相同目的。
另一个可行方案是调用setModal(true)
或 setWindowModality()
, 然后调用 show()
。而区别于exec()
的是, show()
将立即交回控制权给调用者。 对于类似显示进度条的应用场景,如需限定用户只能与对话框交互(比如,允许取消一个执行时间过长的操作),此时 setModal(true) 就很有用处。
一个 {非模态}(modeless)对话框表示其对话框本身的操作和该应用的其他窗口互相独立互不影响。 例如文字处理程序中的“查找文字”功能通常是非模态的,以便用户同时操作对话框和应用程序窗口 非模态对话框通过调用 show() 使其显示, 其会将控制权立即返回给调用者
如果在隐藏对话框后调用 QWidget::show()
show()
,对话框将显示在其原本所在的位置。若要记住用户调整对话框位置后的位置, 需要在QWidget::closeEvent()
closeEvent()
中保存窗体位置并在显示对话框前移动对话框到所保存的位置。
对话框的 默认 按钮是指当用户直接按下回车(Enter / Return)键时所会被按下的按钮。用以表明用户接受了对话框的某些操作并想要关闭对话框。对于 QDialog 可以使用QPushButton::setDefault()
, QPushButton::isDefault()
和 QPushButton::autoDefault()
来设置或调整一个对话框的默认按钮。
如果用户在对话框出现后按下了 Esc 键, 将会触发 QDialog::reject()
并导致窗体被关闭。 QCloseEvent "关闭事件" 不可以是QEvent::ignore()
"忽略事件" .
模态对话框通常伴随返回值一同使用。例如用来标识判断用户是按下了 OK 确认按钮 还是 Cancel 取消按钮。 对话框可以通过调用accept()
或 reject()
槽来关闭, exec()
则会根据实际情况返回 Accepted
或 Rejected
。 如果对话框没有被销毁,也可以通过result()
得到对话框的返回值。
若要修改对话框的关闭行为,你可以重新实现accept()
, reject()
或 done()
。而QWidget::closeEvent()
closeEvent()
仅当你需要记住对话框位置或是重载标准的关闭行为时才应使用
Dtk::Widget::DAbstractDialog::DAbstractDialog | ( | QWidget * | parent = nullptr | ) |
构造一个DAbstractDialog实例
[in] | parent | 父对象 |
Dtk::Widget::DAbstractDialog::DAbstractDialog | ( | bool | blurIfPossible, |
QWidget * | parent = nullptr |
||
) |
构造一个 DAbstractDialog 实例
[in] | parent | 父对象 |
[in] | blurIfPossible | 决定要不要开启窗口背景模糊 |
|
protected |
对话框的鼠标移动事件
|
protected |
对话框的鼠标点击事件
|
protected |
对话框的鼠标释放事件
|
inline |
将窗口移动到指定坐标
|
protected |
窗口大小改变事件
|
slot |
|
overrideprotected |
窗口显示事件,如果收到过鼠标移动事件不再使用自动布局
|
readwrite |
获取对话框显示位置