2012-12-20 46 views
0

我使用的是QTableWidget,我用純文本項目填充它。如果我選擇一個單元格並按下一個鍵,則選擇將變爲一個單元格,該單元格的按鍵爲其起始字母。我如何禁用此行爲?在QTableWidget中禁用鍵盤搜索

回答

2

您需要定義您自己的繼承QTableWidget類的TableWidget類,並用空實現覆蓋虛擬keyboardSearch()函數。這將禁用鍵盤搜索功能。

class MyTableWidget : public QTableWidget 
{ 
... 
public: 
    virtual void keyboardSearch(const QString& search) {}; 
... 
}; 
+0

是的,這是我需要的功能。但我試着避免從QTableWidget繼承。目前我使用Qt設計器創建了表並安裝了一個eventFilter。是否有可能通過事件捕捉「keyboardSearch」? – norca

+1

這也適用,但通過過濾鍵盤事件,您可能會干擾QTableWidget的其他狀態(例如編輯狀態),而您不想過濾鍵盤事件。你最終可能會用相當複雜的代碼來做正確的事情。乾淨和最安全的方法是覆蓋keyboardSearch()。很容易,您不需要做比我在代碼示例中做的更多的事情,並且一旦完成,您就可以在Qt Designer中使用您的類。這很容易通過右鍵單擊Qt Designer中的小部件中的QTableWidget並選擇「Promote to ...」來實現。 –