2016-08-15 160 views
1

我正在使用Qt5.6,我有QWidget图形对象呈现,当其他图形呈现在别人面前时,这似乎触发图形下的图形更新面前。Qt图形被另一个遮挡,但仍然导致画面更新

这会产生开销,我想确定后面的图形是否被前面的图形完全遮挡,如果是,则应该中止绘制事件。

我认为这将是自动的,并作为Qt内部的一部分,但似乎没有。

+0

只是QWidget派生的对象。 – SPlatten

+0

1)你怎样才能完全摆脱另一个部件的情况? 2)你确定你在QPaintEvent参数中获得了一个未被剪裁的区域吗? – peppe

+0

我的应用程序呈现来自xml文件的内容。一些小部件具有显示在父母身上的小孩小部件。 – SPlatten

回答

1

每个小部件的绘画事件都来自小部件合成器,一旦合成器确定小部件应该重新绘制。没有办法中止它:如果事件到达,这意味着小部件必须油漆,否则你会得到视觉上未定义的结果。

默认情况下,窗口小部件可以是透明的,而窗口小部件合成器必须按照先后顺序绘制整个窗口小部件堆栈以组成它们。

任何不透明的小部件都应该有Qt::WA_OpaquePaintEvent属性集。这将通知小部件排序器,任何完全隐藏在小部件后面的小部件都不需要绘制。确保您绘制小部件的每个像素!

+0

谢谢,明天我会试试这件事 – SPlatten

相关问题