0

我在我们的 Qt Windows 应用程序上遇到了一个非常奇怪的 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 的行为也很奇怪——弹出视图显示在一个奇怪的位置(下面的屏幕截图)。同样,如果我调整父级的大小,弹出视图会显示在预期的位置。这可能表明在某处(相对位置)未正确设置位置或父对象存在一些问题,但我不确定从哪里开始。

它似乎确实与以某种方式设置父级有关,因为使用附加的示例,如果我添加向导页面:

wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", this));

或者

wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", NULL));

使组合框的弹出视图如下所示: 捕获2

使用时:

wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", wizard));

使它看起来像这样: 在此处输入图像描述

不过,仍然不确定根本原因是什么。文件附在下面。

源文件和头文件

4

0 回答 0