簡體   English   中英

獲取選定的QTreeWidget單元格

[英]Get selected QTreeWidget cells

假設我有一個6行6列的treeWidget。 我已將選擇行為設置為選擇單個項目,而不是整個行。 這按預期工作,我可以選擇單個單元格。 我的問題是如何查詢當前選擇的單元格?

我試過使用treeWidget.selectedItems(),但這會返回一個列表treeWidgetItems,據我所知,它對應於整行。 因此,如果我在同一行中選擇了幾列,則此命令將返回一個包含單個treeWidgetItem的列表。 而且我找不到辦法找出在treeWidgetItem中選擇了哪些列。

任何想法如何去做?

您可能需要使用QItemSelectionModel並調用方法selectedIndexes()

參考http : //doc.qt.io/qt-5/qitemselectionmodel.html#selectedIndexes

QItemSelectionModel* model = myTreeWidget->selectionModel();
QModelIndexList indexList = model->selectedIndexes();

for(int i = 0; i < indexList.size(); ++i) {
    QTreeWidgetItem* item = myTreeWidget->itemFromIndex( indexList[i] );
    // do something with each item
}

此外,列表中的各個索引將包含可能有用的.row().column()信息。

編輯

作為在索引中使用.column()示例:

for(int i = 0; i < indexList.size(); ++i) {
    QTreeWidgetItem* item = myTreeWidget->itemFromIndex( indexList[i] );

    int c = indexList[i].column();
    QVariant d = item.data(c, Qt::DisplayRole);
    d = QVariant( d.toString() + "*" )
    item->setData(c, Qt::DisplayRole, d);    
}

每次運行此循環時,選定的單元格應在末尾添加*

編輯:修復了對item->setData( ... )的調用的問題

暫無
暫無

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

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