Qt Can';t更改QListView中项目的颜色
我有以下代码Qt Can';t更改QListView中项目的颜色,qt,c++11,qt5,Qt,C++11,Qt5,我有以下代码 QStringListModel *model = new QStringListModel(); QStringList list; ui.listViewResults->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.listViewResults->setViewMode(QListView::ListMode); list << "A"; list <&l
QStringListModel *model = new QStringListModel();
QStringList list;
ui.listViewResults->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui.listViewResults->setViewMode(QListView::ListMode);
list << "A";
list << "B";
list << "C";
model->setStringList(list);
QModelIndex vIndex = model->index(0, 0);
QMap<int, QVariant> vMap = model->itemData(vIndex);
vMap.insert(Qt::BackgroundRole, QVariant(QBrush(Qt::red)));
model->setItemData(vIndex, vMap);
ui.listViewResults->setModel(model);
QStringListModel*model=新的QStringListModel();
QStringList表;
ui.listViewResults->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui.listViewResults->setViewMode(QListView::ListMode);
列表项数据(vIndex);
vMap.insert(Qt::BackgroundRole,QVariant(QBrush(Qt::red));
模型->设置项数据(vIndex、vMap);
ui.listViewResults->setModel(模型);
然而,颜色似乎没有改变,有什么想法吗?谢谢 如果您需要每个项目的不同背景,请使用和。或者您甚至可以创建自己的模型/项目子类化
使用和的示例
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
#包括
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
QStandardItemModel*model=新QStandardItemModel();
QList列表;
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->listView->setViewMode(QListView::ListMode);
列表项数据(vIndex);
vMap.insert(Qt::BackgroundRole,QVariant(QBrush(Qt::red));
模型->设置项数据(vIndex、vMap);
ui->listView->setModel(模型);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
A
QStringListModel
只存储字符串。也许你想要一个QStandardItemModel
?谢谢@peppe如果你想发布答案,这个问题就解决了。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStringListModel>
#include <QStandardItemModel>
#include <QListView>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStandardItemModel *model = new QStandardItemModel();
QList<QStandardItem *> list;
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->listView->setViewMode(QListView::ListMode);
list << new QStandardItem("A");
list << new QStandardItem("B");
list << new QStandardItem("C");
model->appendColumn(list);
QModelIndex vIndex = model->index(0, 0);
QMap<int, QVariant> vMap = model->itemData(vIndex);
vMap.insert(Qt::BackgroundRole, QVariant(QBrush(Qt::red)));
model->setItemData(vIndex, vMap);
ui->listView->setModel(model);
}
MainWindow::~MainWindow()
{
delete ui;
}