События мыши или проблемы с позицией в Qt 5.6
У меня была очень странная проблема с пользовательским интерфейсом в нашем приложении Qt для Windows. После обновления с Qt 5.3.1 до 5.6.0 некоторые виджеты стали не щелкаемыми до тех пор, пока я не изменил их родительский размер (QDialog, QWizard или просто QSplitter). Это включает в себя QPushButtons, QRadioButtons, QCheckBoxes и т. Д. Что странно, так это то, что это происходит только на моей машине и на машинах других разработчиков - все остальные разработчики не сталкиваются с этой проблемой. Я думал, что это может иметь какое-то отношение к установке более чем одной версии Qt (у меня есть 4.8., 5.3.1 и 5.6.0) - но это кажется маловероятным (плюс все другие разработчики также имеют несколько версий). Мы используем VisualStudio 2015 на Windows 7.
Я приложил небольшой код, который воспроизводит проблему для меня на 100%, но может или не может на других машинах. Что происходит со мной, так это то, что когда я нажимаю кнопку "щелкнуть" и всплывающее окно QWizard, я не могу нажать кнопку "Отмена" (ни кнопку "Готово" после ее включения) - событие мыши, по-видимому, не регистрируется в все. Я могу нажать X в правом верхнем углу, хотя. Если я изменю размер QWizard в любом направлении, я могу нажать кнопку "Отмена".
Возможная подсказка заключается в том, что на QDialogs, которые имеют эту проблему, QComboBoxes ведут себя странно, а всплывающее окно отображается в странной позиции (скриншот ниже). Опять же, если я изменю размер родительского элемента, всплывающее окно отображается в ожидаемом месте. Это может указывать на некоторые проблемы, связанные с тем, что позиции или родительские объекты где-то установлены неправильно (относительные позиции), но я не уверен, с чего начать.
Кажется, это как-то связано с настройкой родителя, потому что, используя прикрепленный пример, я добавляю страницу мастера с помощью:
wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", this));
ИЛИ ЖЕ
wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", NULL));
делает всплывающее окно со списком выглядит следующим образом:
При использовании:
wizard->addPage(new GeneralPropertiesPage(QSet<QString>() << "test", wizard));
Тем не менее, не уверен, в чем причина. Файлы прилагаются ниже.