Qt不可见的组合框在发行版本中(但不在调试版本中)

时间:2018-09-27 13:08:19

标签: c++ qt user-interface

我有一个到目前为止运行良好的应用程序。 今天,我已经将Ubuntu升级到18.04,因此重新安装了所有软件组件,包括Qt。

现在,我经历了一个漂亮的有线行为。 当我在调试版本中编译应用程序时,一切都正确。当我切换到发布版本时,一些组合框变得不可见。

奇怪的是,事件仍然有效,组合框仍然存在(但不可见)。 我知道这是因为我使用了installEventFilter()if(event->type() == QEvent::Enter)一起使用,如果我用鼠标悬停组合框,它将更改其他一些小部件。尽管组合框不可见,但是当我将鼠标悬停在组合框所在的区域时,事件仍然起作用。

不幸的是,我不知道是什么导致了这个问题,所以我无法在一个最小的例子中重现它。

我的问题是:以前有人遇到过这样的事情吗? 并且:我应该从哪里开始寻找错误? (我无法调试它,因为对于调试版本而言一切都正确)

顺便说一句:我不知道这是否相关,但是当我第一次尝试运行该应用程序时,我收到一个错误,提示gl/gl.h丢失了。向朋友谷歌寻求帮助后,我发现缺少OpenGL,因此我安装了它。

1 个答案:

答案 0 :(得分:1)

设置组合框的属性时,我会去寻找未初始化的变量。通常在调试中,甚至将统一变量都设置为某个固定值。

或者您是否正在未在发行版本中编译的断言中设置属性?例如。像这样

Q_ASSERT(...)

()之间的代码只会在发布版本期间被跳过。