使用QListView和QStandardItemModel,是否可以在列表视图中显示图标而不显示相关文本?QStandardItem定义如下:
QStandardItem ( const QIcon & icon, const QString & text )
Run Code Online (Sandbox Code Playgroud)
所以它似乎需要某种文本字符串 - 我只想显示图标.如果我使用以下代码,我会按要求获取图标,但我也会在其下方获得一个空白文本元素.我不想要这个.
ImageListView->setViewMode( QListView::IconMode );
{
QStandardItemModel *iStandardModel = new QStandardItemModel(this);
QStandardItem* item1 = new QStandardItem(QIcon("images/shield-280x280.png"),"");
QStandardItem* item2 = new QStandardItem(QIcon("images/shield-280x280.png"),"");
iStandardModel->appendRow(item1);
iStandardModel->appendRow(item2);
ImageListView->setIconSize(QSize(100,100));
ImageListView->setUniformItemSizes(true);
ImageListView->setDragDropMode(QAbstractItemView::DropOnly);
ImageListView->setModel(iStandardModel);
}
Run Code Online (Sandbox Code Playgroud)
如果我遇到构建自定义模型的麻烦,我可以解决此问题吗?
我有一个非常简单的QListWidget对象,我想建立一个文件夹列表.当我将一个项目添加到我的列表中时,我的工作是:
void LessCC::on_addFolderButton_clicked()
{
QString dirName = QFileDialog::getExistingDirectory(this, tr("Choose Directory"), QDir::homePath(), QFileDialog::ShowDirsOnly);
QListWidgetItem* newItem = new QListWidgetItem(QIcon(":/resources/icons/folder.png"), dirName, 0, 0);
this->ui->folderListWidget->addItem(newItem);
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我希望我的项目有多行或一列信息(具有不同的样式).
我听说过QStyledItemDelegate,但我真的不明白它是如何工作的,因为我发现的所有其他解决方案对于这么简单(?)的事情来说似乎很复杂.
这是唯一的解决方案还是有一些更简单的我没有看到?
希望可以有人帮帮我.