发布版本中的 Qt 不可见组合框(但不在调试版本中)
Posted
技术标签:
【中文标题】发布版本中的 Qt 不可见组合框(但不在调试版本中)【英文标题】:Qt invisible combo box in release build (but not in debug build) 【发布时间】:2018-09-27 13:08:19 【问题描述】:我有一个到目前为止运行良好的应用程序。 今天我已将我的 ubuntu 更新到 18.04,因此重新安装了所有软件组件,包括 Qt。
现在我体验到了一种非常连贯的行为。 当我在调试版本中编译我的应用程序时,一切都是正确的。当我切换到发布版本时,一些组合框变得不可见。
奇怪的是,事件仍然有效,组合框仍然存在(但不可见)。
我知道这一点是因为我使用installEventFilter()
如果我用鼠标悬停组合框,if(event->type() == QEvent::Enter)
会更改其他一些小部件。尽管组合框是不可见的,但当我将鼠标悬停在组合框所在的区域时,事件仍然有效。
不幸的是,我不知道是什么导致了这个问题,所以我无法在一个最小的例子中重现它。
我的问题是:以前有没有人经历过这样的事情? 并且:我应该从哪里开始寻找错误? (我无法调试它,因为调试版本的一切都是正确的)
顺便说一句:我不知道这是否相关,但是当我第一次尝试运行应用程序时,我收到了一个错误,gl/gl.h
丢失。在向我的朋友 google 寻求帮助后,我发现 OpenGL 丢失了,所以我安装了它。
【问题讨论】:
第一件事:***.com/help/mcve 【参考方案1】:在设置组合框的属性时,我会去寻找未初始化的变量。通常在调试中,即使是未初始化的变量也会设置为某个固定值。
或者您可能正在设置未在发布版本中编译的断言中的属性?例如。像这样
Q_ASSERT(...)
() 之间的代码将在发布构建期间被跳过。
【讨论】:
感谢您的回答,我会看看这个。有点奇怪的是,它在发布时在windows上运行,之前在Linux上运行,现在我在Linux下切换到新版本时发生了这种情况 我查看了源代码,现在它可以工作了,我的MainWindow::eventFilter
函数错过了一个返回语句(因为我认为这无关紧要)。我只是添加了这个语句,现在它可以工作了。我会接受你的回答,因为它给了我正确的方向。以上是关于发布版本中的 Qt 不可见组合框(但不在调试版本中)的主要内容,如果未能解决你的问题,请参考以下文章
Fabric(Crashlytics):最新版本在“最新版本”部分不可见