我有一個簡單的列表: mylist = ["foo", "bar", "baz"]
在PySide中,保持QtTableWidget和列表同步的正確方法是什麼?
,並用1列QtTableWidget。我想保持mylist中的數據與QtTableWidget中的數據保持同步,包括允許拖放重新排序(即用戶可以這樣做,並且mylist
得到更新)和編程更改(即,我更新mylist
和表得到更新)。
什麼是對方法做到這一點?
我有一個簡單的列表: mylist = ["foo", "bar", "baz"]
在PySide中,保持QtTableWidget和列表同步的正確方法是什麼?
,並用1列QtTableWidget。我想保持mylist中的數據與QtTableWidget中的數據保持同步,包括允許拖放重新排序(即用戶可以這樣做,並且mylist
得到更新)和編程更改(即,我更新mylist
和表得到更新)。
什麼是對方法做到這一點?
請注意,通常Qt/C++沒有辦法將通用數據結構與視圖鏈接起來。模型是這種儀器化的數據結構,允許與視圖進行簡單的鏈接 - 通用列表,如QStringList
不能像那樣使用。
在Python中,應該可以將屬性注入到任何列表的現有實例中,以將其轉換爲模型,以通知其視圖對其所做的更改。我不知道是否有任何Qt到Python的橋樑可以完成這樣的事情,我只能給出C++的觀點。知道PyQt或PySide的人可以隨意編輯和編輯。對於模型,使用QStringListModel
。在視圖上啓用拖放重新排序如下:
view.setDragEnabled(true);
view.setDropIndicatorShown(true);
view.setDragDropMode(QAbstractItemView::InternalMove);
我other answer具有使用便利性部件QListWidget
其BUIT-模型一個完整的例子。作爲一個出發點,這可能會更好,對於可以用鼠標進行合理操作的列表來說,這是一個不錯的選擇。一般來說,如果一個模型有100個項目,它不能用一個鼠標很容易操作,沒有一種實時發現或修剪某種方式 - 滾動這麼多項目是一個可用性的噩夢。所以不要這樣做。
Qt的文檔將成爲開始學習的好材料。閱讀關於model/view framework。然後查看QStringListModel
和您選擇的視圖,如QTableView
或QListView
。
你可以在模型上更清楚些嗎?我對此很陌生。另外,一個好的教程的鏈接會很好。 – dmd