qt隐藏showEvent()上的控件

Pro*_*aos 1 c++ qt qt4

我在一个窗口上调用show(),它有几个控件,并显示所有控件.

其中一个控件是继承自的自定义控件QFrame.

如果设置了特定标志,我想隐藏此控件.所以我有

void MyCustomControl::showEvent ( QShowEvent * /* evt */ )
{
    if (!m_visibleAllowed)
        hide();
} 
Run Code Online (Sandbox Code Playgroud)

虽然这隐藏了控制,但它使控制愚蠢; 它看起来很冷冻.调整窗口大小时,控件应该在的区域不会刷新.搜索论坛,我得到的想法是隐藏控件不应该被执行showEvent()是真的吗?若是,那么我应该如何/在哪里尝试隐藏控件.如果可以隐藏控件showEvent(),我该如何防止控件被冻结.

谢谢你的时间.

Chr*_*ris 5

如果问题是在show事件期间调用hide()(我无法确认它是明确禁止的,但通常听起来不是一个好主意)并且从show事件中调用hide是你真正需要的地方有这个代码然后你可以使用单发计时器:

QTimer::singleShot( 0, this, SLOT(hide()) );
Run Code Online (Sandbox Code Playgroud)

这将简单地推迟hide()函数的执行,直到下一轮的事件循环.