在Plasma 5.2 (KDE 5)中禁用的Qt按钮没有显示为禁用状态。

9
在KDE 5(Kubuntu 15.04 / Plasma 5.2)中,禁用的Qt按钮(Qt4)与非禁用按钮无法区分。如下截图所示,这个问题在KDE 4.14中不存在:

Disabled buttons: KDE 4 versus KDE 5

这个对话框的程序源码是用Python和PyQt4编写的:
from PyQt4 import QtGui
import sys


if __name__ == "__main__":
    # main function

    app = QtGui.QApplication(sys.argv)

    qw = QtGui.QWidget()
    qw.resize(150, 120)
    qw.setWindowTitle("KDE 4")
    #qw.setWindowTitle("KDE 5")

    b1, b2 = QtGui.QPushButton(qw), QtGui.QPushButton(qw)
    for b, y, e in zip([b1, b2], [30, 60], [False, True]):
        b.move(30, y)
        b.setEnabled(e)
        b.setText("Enabled" if e else "Disabled")

    qw.show()
    sys.exit(app.exec_())

我该如何让KDE 5中的禁用按钮可识别?
更新2015-07-17:
看起来这是主题的问题:在Debian/sid中使用Oxygen主题可以避免这个问题。
同时Bug 343930也解决了这个问题。

@ngulam 谢谢 - 我想我最终会做定制样式表 - 再见可移植性... - Dietrich
@Dietrich 这不是最优雅的解决方案,但您应该能够使用三引号字符串将样式表存储在脚本中,并从字符串中加载。至少可以解决可移植性问题。 - Darth Vader
@Dietrich 你可以找到它运行的平台,并根据结果启用或禁用样式表(我知道你无法确定确切的GUI工具包,但是你可以假设在Windows和OSX上保留默认样式是安全的,只需在所有Linux变体上启用它们,这样你就可以少测试很多平台了)。 - Darth Vader
1
好吧,这可能不是你想要的,但在PyQt5中它运行得非常好。 - Andrzej Pronobis
@Andrzej 感谢您在PyQt5中进行测试。这可能是解决方案:一旦WinPython与PyQt5一起发布,立即切换到PyQt5。 - Dietrich
显示剩余3条评论
1个回答

1
这是KDE/Plasma5使用的Breeze主题中的一个错误。现在已经解决了。以下是使用Qt5和PyQt5启用和禁用按钮的截屏。

Using C++/Qt5

Using Python/Qt5


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接