Отключить ввод с клавиатуры для QFontComboBox

Можно ли отключить ввод с клавиатуры для 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, с другой стороны, имеет это хорошее решение:

qtcreator font-selector

который больше похож на обычный QComboBox. Я искал повсюду, но не могу найти настройки для отключения ввода с клавиатуры/изменения внешнего вида QFontComboBox. Любые идеи?


person Henry    schedule 15.12.2013    source источник


Ответы (1)


QFontComboBox является QComboBox (то есть его подкласс), поэтому все, что вам нужно сделать, это:

    fonts.setEditable(False)
person ekhumoro    schedule 15.12.2013
comment
эхуморо, спасибо (еще раз)! Оказывается, реальная проблема заключалась в другом: этот конкретный шрифт принадлежал элементу в QTreeView. Он был возвращен .createEditor() подкласса QStyledItemDelegate. При установке для isEditable() значения False редактирование QTreeView было полностью отключено. Прочитав ваш ответ, я знал, где искать проблему, завернул нередактируемый шрифт в виджет и позволил .createEditor() вместо этого вернуть этот виджет. - person Henry; 16.12.2013