c++ - 在 MainWindow 获得焦点之前,QPushButton 处于非事件状态

标签 c++ qt

我有一个带有三个 QPushButton 的 QMainWindow(排列在 QWidget 的 QVBoxLayout 中)。除了 objectName、icon 和 iconSize 之外,它们都具有相同的属性。全部启用并有两个图标,一个用于正常,一个用于禁用。

当我启动我的应用程序时,最上面的图标总是显示禁用图标(但正在工作,所以它已启用)其他两个都很好。一旦该窗口中的可聚焦控件获得焦点,图标就会变为事件控件,一切正常。

在窗口的 showEvent 中调用 updaterepaint 也无济于事。

我正在使用 gcc 4.8.1 和 qt 5.1.0。

关于如何处理这个故障有什么想法吗?

更新: 变得更奇怪了:启动程序,图标显示禁用,让另一个应用程序获得焦点,图标显示启用,再次将窗口置于顶部但没有给它焦点(例如通过使用任务栏)将图标更改回已禁用。单击窗口中的一个控件,它可以有焦点将再次修复它。

最佳答案

好吧,好吧,我终于明白了。我只是在代码中手动设置焦点,然后意识到图标的设置方式有误。如果一个按钮当前被聚焦,它会显示禁用图标。我弄乱了不同的按钮状态,太多状态都有禁用图标。

关于c++ - 在 MainWindow 获得焦点之前,QPushButton 处于非事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19633435/

相关文章:

c++ - 如何将 cin 用于数组

c++ - clangd-14 找不到 C++ header

c++ - 主窗口关闭时 QWidget 不会关闭

qt - QML 对象类型不是 QTCreator 中的类型错误

qt - 如何将 QAbstractTableModel 和 QItemDelegate 组合到一个工作源?

c++ - 你可以在 QDialog 中添加一个工具栏吗?

c++ - 在 Windows 中使用 C++ 截取窗口截图的最佳方法是什么?

c++ - 为什么两个不同的概念都称为 "heap"?

C++ ffmpeg x264编码设置

c++ - Qt/C++ 从 QPolygonF 继承为 QList 项