qt隐藏控件在showEvent()
qt hiding a control on showEvent()
我在一个窗口上调用show(),它有几个控件,所有的控件都显示出来。
其中一个控件是继承自QFrame
的自定义控件。
如果设置了特定的标志,我想隐藏此控件。这里是
void MyCustomControl::showEvent ( QShowEvent * /* evt */ )
{
if (!m_visibleAllowed)
hide();
}
虽然这隐藏了控件,但它使控件变得愚蠢;它看起来是冻结的。当窗口大小被调整时,控件应该所在的区域不会被刷新。在论坛周围搜索,我得到的想法是隐藏控件不应该在showEvent()
上完成,这是真的吗?如果是这样,那么我应该如何/在哪里隐藏控制。如果隐藏控制从showEvent()
是可能的,我怎么能防止控制被冻结。
如果问题是在显示事件期间调用hide()(我不能确认它是明确不允许的,但通常听起来不像一个好主意),并且从显示事件调用hide是你真正需要这个代码的地方,那么你可以使用单镜头计时器:
QTimer::singleShot( 0, this, SLOT(hide()) );
,它将简单地延迟hide()
函数的执行,直到下一轮事件循环。
也许您可以使用QStackedLayout或QStackedWidget,在堆栈中有两个小部件:您的控件和一个"空白"的QWidget。如果你这样做,而不是在控件上使用show()和hide(),你可以切换堆栈顶部的内容。
这样你就不会试图渲染一个隐藏的小部件-如果你的控件不可见,你渲染空白的QWidget代替-我怀疑这将解决你的图形故障。
希望这对你有帮助!
相关文章:
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 在C++中隐藏键盘记录器的控制台窗口
- 从静态库使用时隐藏不透明结构的内容
- 隐藏用于聚合初始化的空基类
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- Qt中的包装连接方法隐藏了编译器所需的信息
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- C++ [错误] 声明'char '隐藏参数。什么意思?
- qt隐藏控件在showEvent()