![](/img/trans.png)
[英]How to get currentIndex of QListView in QStyledItemDelegate::paint()
[英]QStyledItemDelegate / QAbstractItemDelegate for QListView
我的目標是創建類似聯系人應用程序的東西,我可以在其中列出聯系人並選擇它來查看有關人員的信息。 我發現可能的解決方案之一是使用 QListView + QStyledItemDelegate / QAbstractItemDelegate。 關於它的信息非常困難,所以我沒有清楚地理解它;
那么我應該如何使用 QAbstractItemDelegate (我聽說我必須重新實現 paintEvent )?
我建議您從數據模型開始。
QStandardItemModel
類開始並使用QStandardItem
類實例填充它。 它允許您為項目設置圖標、文本、字體、背景、大小和其他屬性。 參考https://doc.qt.io/qt-5/qstandarditemmodel.html#detailssetModel
將模型設置為QListView
QListView
的clicked
信號。要以更復雜的方式呈現項目,您應該
QStyledItemDelegate
類和它的paint
和sizeHint
方法。 在paint
方法中你應該實現渲染並且你的sizeHint
方法應該返回一個有效的項目大小。 參考https://doc.qt.io/qt-5/qabstractitemdelegate.html#detailspaint
方法的QModelIndex
引用的data
方法。 使用不同的角色來獲取適當的數據。 參考https://doc.qt.io/qt-5/qt.html#ItemDataRole-enumsetItemDelegate
將其設置為QListView
來使用您的委托類。模型應設置為 QListView 並以相同的方式處理項目點擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.