2013-04-22 60 views
-1

是的,你是對的。我們已經有了QListView,當我們試圖用Model/View顯示簡單列表時,它是完美的。在QListWidget上使用模型/視圖

但是,當我們需要顯示帶有豐富文本和小部件的複雜列表時,QListView有很多問題。試想一下Facebook或Twitter的時間表列表視圖。

當然,我們可以實現我們自己的代表富文本或圖像,但ListView只能打印靜態項目。所以,沒有辦法顯示可點擊的超鏈接(你可以計算鼠標和超鏈接的位置,但它是一個非常乾淨的工作)或加載異步圖像。

那麼,QListWidget似乎是我們的解決方案。我們可以將小部件放入其中。但。 我們將失去我們的模型/視圖/委託架構,那太可怕了!

現在,我的解決方案是用QML編寫我的listview。其他小部件仍然是原生Qt小部件。 (我不喜歡非純粹的純QML用戶界面。)

QML在做這類工作時非常靈活。然後導出我的模型,最後把查看器放到我的QMainWindow中。但使用兩種編程語言進行編碼並試圖與其他本地小部件通信實際上很困難。

那麼,有沒有辦法在QListWidget中使用Qt的Model/View架構?或者我必須自己實施它們?

+0

花費這麼多時間寫一個問題,但沒有找到5分鐘,至少簡要地看了一下原始的Qt文檔... – evilruff 2013-04-22 17:58:10

+0

也許我不明白我自己的問題。對於這個問題,解決方案很簡單。但這不是我想要的,我打開了另一個問題。 – 2013-04-26 08:43:58

回答

2

QListWidgetdoes use Qt's MVC,因爲它從QListView派生,...

QListWidget使用內部模型 列表來管理每個QListWidgetItem。

只需使用QListWidget::model() const即可訪問模型。

+0

這是如何幫助我設置自己的模型來使用QListWidget?我有我自己的模型,我應用過濾模型,我希望所有這些應用於QListWidget。我認爲這就是這個問題的全部內容。在我的理想世界中,QListSomething將有一個委託集,因此當從模型中收集新數據時,我可以創建自己的自定義小部件 – mhstnsc 2013-06-18 12:46:52