2017-09-10 15 views
1

次のコードがあります。QListViewのアイテムの色を変更できません

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

ただし、色は変更されていないようです。ありがとう!

+1

を使用してのQAbstractItemModel

例をサブクラス化する独自のモデル/アイテムを作ることができます。 QStandardItemModelが必要なのでしょうか? – peppe

+0

ありがとうございます@peppe答えとして投稿したい場合は、この問題を解決しました。 – RanH

答えて

1

QStandartItemModelQStandartItemをそれぞれの項目に異なる背景が必要な場合は使用してください。それともあなたも `QStringListModel`が文字列以外のものが格納されていないQStandartItemModelQStandartItem

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

enter image description here

関連する問題