Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 调用子对象的调整大小事件比调用父对象的调整大小事件更快_Qt_User Interface - Fatal编程技术网

Qt 调用子对象的调整大小事件比调用父对象的调整大小事件更快

Qt 调用子对象的调整大小事件比调用父对象的调整大小事件更快,qt,user-interface,Qt,User Interface,在QWidget应用程序中,当调整主窗口的大小时,我会更改一些参数,我希望在一些单独元素的调整大小事件中使用它们 但是,子对象的调整大小事件似乎比父对象的调整大小事件触发得更快 最明显的方法是从主窗口的resizeEvent发出一个信号,并将其连接到所有需要它的小部件,但是会有很多这样的小部件,所以如果可能的话,我希望避免这种情况。是否有更简单的解决方案?检查父级是否已经具有正确的大小。它可能还没有收到调整大小事件,但可能大小正确。@KubaOber:可能收到了,但这对我没有帮助。我需要的是,我

QWidget
应用程序中,当调整主窗口的大小时,我会更改一些参数,我希望在一些单独元素的调整大小事件中使用它们

但是,子对象的调整大小事件似乎比父对象的调整大小事件触发得更快


最明显的方法是从主窗口的
resizeEvent
发出一个信号,并将其连接到所有需要它的小部件,但是会有很多这样的小部件,所以如果可能的话,我希望避免这种情况。是否有更简单的解决方案?

检查父级是否已经具有正确的大小。它可能还没有收到调整大小事件,但可能大小正确。@KubaOber:可能收到了,但这对我没有帮助。我需要的是,我想在父对象的调整大小事件中做出一些决定,而不是在每个子对象的调整大小事件中编写相同的代码(检查父对象的大小并对其进行计算)。然后,您只需观察子对象的调整大小事件,设置标志,对调整大小作出反应,并在父级最终收到调整大小命令时清除该标志。Qt使得添加子对象时很容易得到通知,因此此代码将是完全通用的,并且可以在单独的
QObject
类中,发出“提前调整大小”信号。干净、简单。如果您合成事件,然后过滤掉真实事件,您甚至可以使父级提前接收调整大小事件。@KubaOber:我的问题是,在父级调整大小事件完成后,我必须在子级(最好在其调整大小事件中)中运行调整大小相关的代码。所以我必须再次向每个孩子发出信号,第二次调用他们的事件。这是我首先要避免的。一旦开始筛选事件,您将捕获第一个子调整大小事件,并且在事件处理程序开始执行之前,您将向父级传递一个合成调整大小事件。然后父对象进行计算。事件处理程序返回到过滤器,然后将事件释放给子级。子事件处理程序运行,并查看具有当前计算值的父事件。这样做的代码几乎比我的注释要短,我正在努力让您先编写:)