Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Can';t更改QListView中项目的颜色_Qt_C++11_Qt5 - Fatal编程技术网

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;
}