使用QItemSelection或QModelIndex从QListWidget获取项目

时间:2014-06-05 19:41:07

标签: qt qt4

我的对话框中有一个回调来监听我的QListWidget中的项目选择:

...
QListWidget* listWidget;
...

MyDialog::handleSelectionChanged(const QItemSelection& selection) {
    if (selection.indexes().isEmpty()) {
        std::cout << "NOTHING SELECTED" << std::endl;
        // TODO: how to get the actual QListWidgetItem here!?
    }
    else {
       bool selected = LoadedFilesListWidget->selectionModel()->isSelected(selection.indexes().first());
       std::cout << "ITEM CHANGE: " << (selected ? "SELECTED" : "UNSELECTED") << std::endl;
       // TODO: how to get the actual QListWidgetItem here!?
    }
}

正如您在todos中看到的,我无法弄清楚如何从QItemSelection对象获取关联的QListWidgetItem。我可以使用listWidget类变量访问列表小部件。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

要从选择中获取QListWidgetItem,您可以执行以下操作:

MyDialog::handleSelectionChanged(const QItemSelection& selection)
{
    [..]

    QModelIndexList indexes = selection.indexes();
    foreach(const QModelIndex &index, indexes) {
        QListWidgetItem *item = LoadedFilesListWidget->item(index.row());
        // ...
    }
}