我的目標是創建類似聯系人應用程式的東西,我可以在其中列出聯系人并選擇它來查看有關人員的資訊。我發現可能的解決方案之一是使用 QListView QStyledItemDelegate / QAbstractItemDelegate。關于它的資訊非常困難,所以我沒有清楚地理解它;
(聯系人應該類似于https://www.sketchappsources.com/free-source/4395-ios-contacts-screen-app-sketch-freebie-resource.html)
那么我應該如何使用 QAbstractItemDelegate (我聽說我必須重新實作 paintEvent )?
uj5u.com熱心網友回復:
我建議您從資料模型開始。
- 使用
QStandardItemModel類開始并用QStandardItem類實體填充它。它允許您為專案設定圖示、文本、字體、背景、大小和其他屬性。參考https://doc.qt.io/qt-5/qstandarditemmodel.html#details - 將您的模型設定為
QListView使用setModel - 處理單擊的專案連接到
QListView的clicked信號。
要以更復雜的方式呈現專案,您應該
- 覆寫
QStyledItemDelegate類paint及其sizeHint方法。在該paint方法中,您應該實作渲染,并且您的sizeHint方法應該回傳專案的有效大小。參考https://doc.qt.io/qt-5/qabstractitemdelegate.html#details - 要獲取專案資料以渲染使用傳遞給方法
data的參考方法。使用不同的角色來獲取適當的資料。參考https://doc.qt.io/qt-5/qt.html#ItemDataRole-enumQModelIndexpaint QListView通過將其設定為by來使用您的委托類setItemDelegate。
模型應設定為 QListView 并以相同的方式處理專案點擊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478039.html
