我有一个QListview,我已经设置了一个模型。该模型包含QList。现在我想在点击项目时获取QListview的内容。但我不知道怎么做?通过我遵循的一些教程,我能够在QListview中看到两个项目,如下所示。但我不知道如何使它工作?请任何人帮忙。我正在处理的代码如下。
listviewmodel =new QListView;
listviewmodel->setModel( createModel() );
listviewmodel->setViewMode(QListView::IconMode);
listviewmodel->setIconSize(QSize(size().width()/8, size().height()/8));
connect(listviewmodel,SIGNAL(clicked(const QModelIndex)),this,SLOT(ItemClicked(QModelIndex)));
QAbstractItemModel *MainWindow::createModel()
{
QStandardItemModel *model = new QStandardItemModel();
QList<QStandardItem *> listItem;
QStandardItem *item2 = new QStandardItem();
item2->setIcon(QIcon(QPixmap::fromImage(qimages2)));
listItem << item2;
QStandardItem *item1 = new QStandardItem();
item1->setIcon(QIcon(QPixmap::fromImage(qimages1)));
listItem << item1;
model->appendColumn(listItem);
return model;
}
void MainWindow::ItemClicked (QModelIndex index )
{
textEdit->setText(index.data().toString());
}
答案 0 :(得分:0)
我在QtCreator中检查了你的代码,它的工作原理如你所描述的那样。那么问题是什么?你有错误吗?也许您没有将ItemClicked(QModelIndex)
的声明置于public slots:
之下?你确定connect
返回true吗?试着检查一下:
bool success = connect(listviewmodel,SIGNAL(clicked(const QModelIndex)),this,SLOT(ItemClicked(QModelIndex)));
Q_ASSERT(success);
编辑:如果您只想在
QListView
显示图标并在点击指定项目后获得一些文字信息,您可以通过以下方式进行:
item2->setIcon(QIcon(QPixmap::fromImage(qimages2)));
item2->setData("informations about item2", Qt::UserRole);
(...)
void MainWindow::ItemClicked (QModelIndex index )
{
QString data = index.data(Qt::UserRole).value<QString>();
ui->textEdit->setText(data);
}