为什么接收事件的多个小部件需要布局
Why a layout is required for multiple widgets recieving events?
我实际上是在用 qt(container
(从 QWidget
中错误化编写一个模块,其中包含多个plot
,呈现一个graph
,其中所有模块都来自 QWidget
。
所以它给出了:
- 1
container
可以有:- n
plot
s,其中每个都包含 - 1
graph
.
- n
我昨天花了很多时间来找出一个错误。碰巧只有 n 个plot
(出于调试目的(添加到其构造函数中的容器中以捕获 paint 事件。
构造 allready 时通过相同方法添加的所有plot
container
都无法接收任何事件。
后来,一位同事在我请求帮助后向我解释说,我的container
(位于mainwindow
表单中(需要在Qtdesigner中分配布局。我试了一下,很惊讶它确实解决了我的问题。将动态生成的plot
添加到container
并将它们添加到布局后,所有小部件都按预期接收事件。
但是由于我无法理解他的解释,也不想进一步打扰他,所以我在这里问这个问题。
那么,为什么动态生成的小部件是其他动态生成的QWidgets的子对象,需要作为mainwindow
子对象的父项分配布局呢?如果这不仅仅是一个例外情况,为什么默认情况下它没有分配,而且我无法在网上找到有此类问题的案例?
看到重叠的同级小部件的副作用,或者大小为零的小部件。布局所做的只是调整它们的大小并确保它们不会重叠。
添加到容器的构造函数中以捕获绘制事件
你所说的"填充"油漆事件是什么意思,这与任何构造函数有什么关系?您声称您的所有类(容器、绘图和图形(都派生自 QWidget
。它们都应该实现paintEvent
,除非它们被设计为除了默认的背景画笔之外没有自己的内容。
我想你在某种程度上使事情变得过于复杂,但是如果没有我们可以编译的独立代码来复制你的问题,我们将绕圈子。随意查看我的答案:它们都由一个main.cpp
组成,有时挤进了相当多的功能。几乎普遍而言,除了演示给定技术所必需的代码之外,没有其他代码。您的问题应包括类似的最小化、可编译的示例。
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- 调整布局上的 QGraphicsView 小部件的大小
- 将小部件添加到布局后,QStylesheet 不起作用
- Qt小部件将子布局堆叠在彼此之上
- Qt:自定义小部件的多个布局
- 如何在布局中与其他小部件一起安排Qcamera
- QT设计器中的自定义小部件在框架中具有预先存在的布局
- 重叠小部件的 QT 自定义布局示例无法编译
- 重新设置小部件pyqt的布局
- 在QT中使用两个不同的布局中使用相同的小部件
- 如何在布局QT上销毁小部件
- 为什么接收事件的多个小部件需要布局
- 如果有可用的位置,如何在布局中添加小部件?否则不添加
- C++ 创建小部件数组
- 如何将添加的小部件定位到基于同一布局中的另一个小部件的布局中
- Qt小部件布局重叠
- 动态地将自定义 qt 小部件添加到框架中,而无需每次都更改布局
- Qt动态创建布局并向布局添加小部件
- Qt小部件布局背景
- Qt小部件布局添加事件