我在一个窗口上调用 show(),它有几个控件,所有控件都显示了。
其中一个控件是继承自 QFrame
的自定义控件。
如果设置了特定标志,我想隐藏此控件。所以,我有
void MyCustomControl::showEvent ( QShowEvent * /* evt */ )
{
if (!m_visibleAllowed)
hide();
}
虽然这隐藏了控件,但它使控件变得愚蠢;它看起来结冰了。调整窗口大小时,控件所在的区域不会刷新。搜索论坛,我得到的想法是隐藏控件不应该在 showEvent()
上完成,是真的吗?如果是这样,那么我应该如何/在哪里尝试隐藏控件。如果可以从 showEvent()
中隐藏控件,我该如何防止控件被卡住。
谢谢你的时间。
最佳答案
如果问题出在您的节目事件期间调用 hide()(我无法确认它是否被明确禁止,但一般来说这听起来不是一个好主意)并且您可以从您的节目事件中调用 hide确实需要这段代码,然后你可以使用单次计时器:
QTimer::singleShot( 0, this, SLOT(hide()) );
这只会将 hide()
函数的执行推迟到事件循环的下一轮。
关于c++ - qt 在 showEvent() 上隐藏一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603581/