【问题标题】:Disable keyboard input for QFontComboBox禁用 QFontComboBox 的键盘输入
【发布时间】:2014-01-03 04:26:49
【问题描述】:

是否可以禁用 QFontComboBox 的键盘输入?以下代码:

import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class FontComboBox(QFontComboBox):

    def __init__(self, parent=None):
        super(FontComboBox, self).__init__(parent)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    fonts = FontComboBox()
    fonts.show()
    sys.exit(app.exec_())

给我(Mac OS X 10.8,PyQt4.8)一个组合框,可编辑,让用户基本上可以输入任何内容。另一方面,QtCreator 有这个很好的解决方案:

它看起来更像一个普通的 QComboBox。我进行了广泛搜索,但似乎找不到禁用键盘输入/更改 QFontComboBox 外观的设置。有什么想法吗?

【问题讨论】:

    标签: qt qt4 pyqt qcombobox


    【解决方案1】:

    QFontComboBoxQComboBox(即它的子类),所以你需要做的就是:

        fonts.setEditable(False)
    

    【讨论】:

    • ekhumoro,谢谢(再次)!原来实际的问题是别的东西:这个特殊的字体框属于 QTreeView 中的一个项目。它由 QStyledItemDelegate 的子类的 .createEditor() 返回。当将 isEditable() 设置为 False 时,QTreeView 的编辑被完全禁用。阅读您的答案后,我知道在哪里寻找问题,将不可编辑的字体框包装在一个小部件中,并让 .createEditor() 返回该小部件。
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多