我在Windows的Qt应用程序上遇到了一个非常奇怪的UI问题。从Qt 5.3.1升级到5.6.0后,一些小部件变得无法点击,直到我调整它们的父级(QDialog,QWizard或简单的QSplitter)。这包括QPushButtons,QRadioButtons,QCheckBoxes等。奇怪的是,这只发生在我和其他开发人员的机器上 - 所有其他开发人员都没有遇到这个问题。我认为它可能与安装了多个版本的Qt有关(我有4.8。,5.3.1和5.6.0) - 但这似乎不太可能(加上所有其他开发人员也有多个版本)。我们在Windows 7上使用VisualStudio 2015。
我附上了一些小代码,可以100%地为我重现问题但在其他机器上可能会也可能不会。对我来说发生了什么,当我点击“点击”按钮并弹出QWizard时,我无法点击“取消”按钮(一旦启用它也没有“完成”按钮) - 鼠标事件似乎没有注册所有。不过我可以点击右上角的X.如果我向任何方向调整QWizard的大小,那么我可以单击“取消”按钮。
一个可能的线索是,在有这个问题的QDialogs上,QComboBoxes表现得非常奇怪 - 弹出视图显示在一个奇怪的位置(下面的截图)。同样,如果我调整父级的大小,弹出视图将显示在预期位置。这可能表明某个位置或父对象在某处(相对位置)没有正确设置的问题,但我不知道从哪里开始。
它似乎与设置父节点有关,因为使用附加的示例,如果我添加向导页面:
from django.db.models import Sum
summary = (Invoice.objects
.annotate(m=Month('date'))
.values('m')
.annotate(total=Sum('total'))
.order_by())
OR
wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", this));
使用时:
wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", NULL));
但仍然不确定根本原因是什么。文件附在下面。