Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Setting background of HeadData for QTableView is doesn't work
Forum Updated to NodeBB v4.3 + New Features

Setting background of HeadData for QTableView is doesn't work

Scheduled Pinned Locked Moved General and Desktop
15 Posts 5 Posters 7.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • raven-worxR Offline
    raven-worxR Offline
    raven-worx
    Moderators
    wrote on last edited by
    #3

    try using background-color. At least in the "docs":http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qheaderview they use it??

    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
    If you have a question please use the forum so others can benefit from the solution in the future

    1 Reply Last reply
    0
    • C Offline
      C Offline
      csding
      wrote on last edited by
      #4

      This code isworking.
      tableView->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}");
      But it is not metting my dynamic setting color on any rows or colums with HeadData.
      [quote author="raven-worx" date="1371192413"]try using background-color. At least in the "docs":http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qheaderview they use it??[/quote]

      1 Reply Last reply
      0
      • A Offline
        A Offline
        andre
        wrote on last edited by
        #5

        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.

        1 Reply Last reply
        0
        • C Offline
          C Offline
          csding
          wrote on last edited by
          #6

          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]

          1 Reply Last reply
          0
          • C Offline
            C Offline
            csding
            wrote on last edited by
            #7

            U p!

            1 Reply Last reply
            0
            • C Offline
              C Offline
              csding
              wrote on last edited by
              #8

              TestBackground.pro
              @
              QT += core gui

              greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

              TARGET = TestBackground
              TEMPLATE = app

              SOURCES += main.cpp
              mainwindow.cpp
              tablemodel.cpp

              HEADERS += 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

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tobias.hunger
                wrote on last edited by
                #9

                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.

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  andre
                  wrote on last edited by
                  #10

                  [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.

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    csding
                    wrote on last edited by
                    #11

                    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]

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      andre
                      wrote on last edited by
                      #12

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

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        csding
                        wrote on last edited by
                        #13

                        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]

                        1 Reply Last reply
                        0
                        • C Offline
                          C Offline
                          csding
                          wrote on last edited by
                          #14

                          Please download the small case visit on:
                          http://pan.baidu.com/share/link?shareid=3014503980&uk=3070491333

                          1 Reply Last reply
                          0
                          • B Offline
                            B Offline
                            BenShafer
                            wrote on last edited by
                            #15

                            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?

                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved