簡體   English   中英

QStyledItemDelegate / QListView 的 QAbstractItemDelegate

[英]QStyledItemDelegate / QAbstractItemDelegate for QListView

我的目標是創建類似聯系人應用程序的東西,我可以在其中列出聯系人並選擇它來查看有關人員的信息。 我發現可能的解決方案之一是使用 QListView + QStyledItemDelegate / QAbstractItemDelegate。 關於它的信息非常困難,所以我沒有清楚地理解它;

(聯系人應該類似於https://www.sketchappsources.com/free-source/4395-ios-contacts-screen-app-sketch-freebie-resource.html

那么我應該如何使用 QAbstractItemDelegate (我聽說我必須重新實現 paintEvent )?

我建議您從數據模型開始。

  1. 使用QStandardItemModel類開始並使用QStandardItem類實例填充它。 它允許您為項目設置圖標、文本、字體、背景、大小和其他屬性。 參考https://doc.qt.io/qt-5/qstandarditemmodel.html#details
  2. 使用setModel將模型設置為QListView
  3. 要處理單擊的項目,請連接到QListViewclicked信號。

要以更復雜的方式呈現項目,您應該

  1. 覆蓋QStyledItemDelegate類和它的paintsizeHint方法。 paint方法中你應該實現渲染並且你的sizeHint方法應該返回一個有效的項目大小。 參考https://doc.qt.io/qt-5/qabstractitemdelegate.html#details
  2. 要獲取要渲染的項目數據,請使用傳遞給paint方法的QModelIndex引用的data方法。 使用不同的角色來獲取適當的數據。 參考https://doc.qt.io/qt-5/qt.html#ItemDataRole-enum
  3. 通過setItemDelegate將其設置為QListView來使用您的委托類。

模型應設置為 QListView 並以相同的方式處理項目點擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM