2013-12-15 65 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