我正在尝试将独占复选框作为QListView项。我使用QStandardItemModel作为QStandardItem的模型。

我将项目动态添加到列表中并将其设置为可检查:

QStandardItem *item = new QStandardItem(treeView->model()->data(index).toString());
item->setCheckable(true);
m_categoriesModel->appendRow(item);

我尝试将所有项目都连接到QSignalMapper,但是QStandardItem没有checked(bool)信号(基本上它没有任何信号)。

有什么办法解决这个问题?

最佳答案

您始终可以按照以下说明的方法进行制作。首先将ListView的点击信号连接到将处理您的项目点击的插槽。其次,您可以在插槽内部从QModelIndex获取项目并检查项目的状态。下面是伪代码:

例如,在ListView的构造函数中:

  connect(this, SIGNAL(clicked(QModelIndex)), this, SLOT(_handleItemClicked(QModelIndex)));

ListView的插槽:
void ListView::_handleItemClicked(QModelIndex index)
{
        QStandardItem* item = _model->itemFromIndex(index);

        if( item->checkState() == Qt::Checked) qDebug() << "Checked!";
}

10-08 17:11