2013-12-15 63 views
2

是否可以禁用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外观的设置。有任何想法吗?

回答

1

一个QFontComboBox一个QComboBox(即它的一个子类),因此,所有你需要做的是:

fonts.setEditable(False) 
+0

ekhumoro,感谢(再次)!结果发现实际问题是其他问题:这个特定的fontbox属于QTreeView中的一个项目。它是由QStyledItemDelegate的子类的.createEditor()返回的。当将isEditable()设置为False时,QTreeView的编辑被完全禁用。在阅读完答案后,我知道在哪里查找问题,将不可编辑的fontbox包装在小部件中,并让.createEditor()返回该小部件。 – Henry