Я не уверен, что на самом деле тип seznamChyb
и ListStringModel
. Но для изменения цвета фона строки потребовалась реализация метода QAbstractItemModel::data()
.
Я пишу пример для этого вопроса, и он работает хорошо:
#include <QApplication>
#include <QTableView>
#include <QAbstractListModel>
class StringListModel : public QAbstractListModel
{
public:
StringListModel(const QStringList &strings, QObject *parent = 0)
: QAbstractListModel(parent), stringList(strings) {}
int rowCount(const QModelIndex &) const
{
return stringList.count();
}
QVariant data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole)
return stringList.at(index.row());
if (role == Qt::BackgroundColorRole && index.row() == 0) // Look this.
return QBrush(Qt::red);
else
return QVariant();
}
private:
QStringList stringList;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableView tableView;
QStringList list;
list << "a" << "b" << "c";
StringListModel model(list);
tableView.setModel(&model);
tableView.show();
return a.exec();
}
Пожалуйста, проверьте свою программу еще раз.
Его действие не работает. – Daffy
'seznamChyb-> insertRows (строка, 1);' ==> 'seznamChyb-> insertRows (строка, 0);' или 'seznamChyb-> index (row);' ==> 'seznamChyb-> index (row , 1); ' – pezy
, если я меняю 0 на 1 или добавлю 1, он не пишет текст, а backgrout его белый снова – Daffy