【发布时间】:2018-11-23 01:42:41
【问题描述】:
为了解释这种情况,我有一个 QMainWindow,里面有很多东西。
我的目标是在此窗口的右下角制作某种通知。
通知小部件必须在所有其他小部件之上。
到目前为止,我已经创建了继承自 QWidget 的 Notification 小部件。 通过将 QMainWindow 设置为其父级,我将它“浮动”在所有其他小部件之上。它不属于任何布局。 现在最大的问题是让它粘在右下角。我设法手动放置它,但我现在想要的是在调整大小事件时移动它。
不幸的是,由于它不属于任何布局,它没有收到任何 resizeEvent,所以我不能重载 resizeEvent() 函数。
一个尝试是让 QMainWindow 在其 resizeEvent 方法中发出一个信号,但我对这种方法并不满意。特别是因为在 Notification 小部件构造函数中我有这个 connect(static_cast<MainWindow*>(parent), &MainWindow::resized, this, &Notification::update_position);,它有点破坏小部件的通用性,因为它的父 必须 是 MainWindow 小部件。
所以问题是一个小部件如何对另一个小部件事件做出反应?
在我的例子中 当它的父级被调整大小时如何通知通知小部件?
而且我忘了提到我不希望 MainWindow 小部件知道有关此通知小部件的任何信息。通知小部件可以自行管理。你只需调用类似new Notification(parent) 的东西,它就会自行完成它的工作
欢迎任何想法, 在此先感谢:)
【问题讨论】:
-
一种方法是在
QMainWindow中做出反应,而不是知道需要更改大小的QWidget是主窗口的子窗口,因此可以轻松找到它的指针。