2011-06-03 282 views
7

我有一個QListView顯示項目列表,但我不想要項目進行編輯(目前雙擊該項目允許您編輯它們)。不可編輯QListView

這是我的代碼:

self.listView = QListView() 
self.model = QStringListModel([ "item1" , "item2" , "item3" ]) 
self.listView.setModel(self.model) 

self.layout = QGridLayout() 
self.layout.addWidget(self.listView, 0 , 0) 
self.setLayout(self.layout) 

回答

21

添加一行:

self.listView.setEditTriggers(QAbstractItemView.NoEditTriggers) 

應該可以解決你的東西。

QListView繼承了具有方法setEditTriggers()的QAbstractItemView。有關setEditTriggers的其他possible values可在文檔中找到。

+0

這是更多的黑客,因爲它仍然是可編輯的,只是不通過這個特定的看法。 – takoi 2011-06-04 09:13:03

0

QStringListModel根據定義是可編輯的。您應該繼承並提供相應的flags

0

感謝您的回覆。我最終選擇了QListWidget,因爲它默認情況下不可編輯。

雖然我還發現,如果你給QListView一個鼠標雙擊事件並將其設置爲除編輯QListView之外的其他東西,它將覆蓋編輯功能,以便也可以使用。

再次感謝,非常感謝。