Setting background of HeadData for QTableView is doesn't work
-
OK.
[quote author="Andre" date="1371196833"]According to the documentation, using the background role should work. I see no obvious mistake in your code from your first post. Please prepare a small test case to demonstrate the issue in isolation. First post, so we can have a look. Then, if it turns out to be a bug, file a bug report.[/quote] -
U p!
-
TestBackground.pro
@
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = TestBackground
TEMPLATE = appSOURCES += main.cpp
mainwindow.cpp
tablemodel.cppHEADERS += mainwindow.h
tablemodel.h
@tablemodel.h
@
#ifndef TABLEMODEL_H
#define TABLEMODEL_H
#include <QAbstractTableModel>class TableModel : public QAbstractTableModel
{
Q_OBJECT
public:
TableModel(QObject *parent = 0);
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
private:
};
#endif@
tablemodel.cpp
@
#include "tablemodel.h"
#include <QColor>
#include <QBrush>
#include <qDebug>
#include <QString>TableModel::TableModel(QObject *parent)
: QAbstractTableModel(parent)
{
}int TableModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return 2;
}int TableModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return 2;
}QVariant TableModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();if (role == Qt::DisplayRole) { if (index.column() == 0) return QString("zhang san"); else if (index.column() == 1) return QString("china"); } if(role == Qt::BackgroundRole) { if (index.column() == 0) return QVariant(QColor(Qt::green)); else if (index.column() == 1) return QVariant(QColor(Qt::green)); } return QVariant();
}
QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (role == Qt::DisplayRole)
{
if (orientation == Qt::Horizontal) {
switch (section) {
case 0:
return tr("Name");
case 1:
return tr("Address");default: return QVariant(); } } } if(role == Qt::ForegroundRole) { if (orientation == Qt::Horizontal) { switch (section) { case 0: return QVariant(QColor(Qt::blue)); case 1: return QVariant(QColor(Qt::blue)); default: return QAbstractTableModel::headerData(section,orientation,role); } } } if(role ==Qt::BackgroundRole) { //if(orientation == Qt::Vertical) if (orientation == Qt::Horizontal) { switch (section) { case 0: qDebug() << "case 0"; return QBrush(QColor(Qt::red)); case 1: qDebug() << "case 1"; return QVariant(QColor(Qt::red)); default: qDebug() << "default"; return QAbstractTableModel::headerData(section,orientation,role); } } } return QVariant();
}
@mainwindow.h
@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTableView>
#include <tablemodel.h>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
TableModel * table;
};
#endif
@mainwindow.cpp
@
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
table = new TableModel(this);
QTableView *tableView = new QTableView;
tableView->setModel(table);
setCentralWidget(tableView);
}
MainWindow::~MainWindow()
{
}
@main.cpp
@
#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
@Setting background of HeadData for QTableView is doesn’t work. Is it a bug for Qt ?
My original post is here:
http://qt-project.org/forums/viewthread/28840/#129491 -
Please "file a bug report":https://bugreports.qt-project.org/ for things you consider to be a bug.
The bugtracker is a way better tool to discuss (possible) bugs than this forum.
-
[quote author="csding" date="1371345306"]U p![/quote]
Well... we agreed you'd create a small, self-contained, compile-able example demonstrating the issue. Based on that, I said we could take a look to see if the error is on your side after all, or you have found a bug in Qt. So far, I haven't seen anything of the sort.
-
I have posted the small,self-contained, compile-able example in a new another thread. You can visit on http://qt-project.org/forums/viewthread/28901/
Sorry, maybe i should notice you with it intime.[quote author="Andre" date="1371451763"]
[quote author="csding" date="1371345306"]U p![/quote]Well... we agreed you'd create a small, self-contained, compile-able example demonstrating the issue. Based on that, I said we could take a look to see if the error is on your side after all, or you have found a bug in Qt. So far, I haven't seen anything of the sort.[/quote]
-
I merged the two topics. Please don't start more than one topic on the same issue. Tobias: I asked for the example as a form of bug triaging even before it ends up in the tracker :)
-
First i want to know whether it is a bug in Qt, if true, i can write a bug report hand in. Waitting you testing for it.
thanks!.[quote author="Andre" date="1371454106"]I merged the two topics. Please don't start more than one topic on the same issue. Tobias: I asked for the example as a form of bug triaging even before it ends up in the tracker :)
[/quote]
-
Please download the small case visit on:
http://pan.baidu.com/share/link?shareid=3014503980&uk=3070491333 -
Is there a bug to track for this item yet? I have the same problem, but I'm still using 4.7.2. Has it been fixed in 4.8.6?