Friday, April 8, 2011

Hiding row labels

I'm using Qt4 to create a table, using the QTableWidget class. I get something like this:

alt text

Problem is: I want to hide the row labels (i.e. the numbers). I just care about columns. I want to get this:

alt text

How can I accomplish this?

From stackoverflow
  • I was wondering about the same thing. However, I was too lazy to find a solution till you asked. (Thanks!!). Anyway, here is the code that worked for me:

        table = QtGui.QTableWidget()
        table.verticalHeader().setVisible(False)
    

    These are actually QTableView's methods. Since you use a QTableWidget which is a child of QTableView, everything works out.

    I am not sure whether this is the best way to do this, but the QHeaderView documentation recommends this method. To quote the PyQt4 docs-

    Appearance

    QTableWidget and QTableView create default headers. If you want the headers to be visible, you can use setVisible().
    Note: Each header renders the data for each section itself, and does not rely on a delegate. As a result, calling a header's setItemDelegate() function will have no effect.
    happy_emi : Thanks, it works! I'm lazy, too. I gave up when I wasn't able to find a property in the qt-Designer which allowed me to do that.
    Krsna : As of Qt Designer 4.5 (I believe), you can set both the vertical and horizontal header properties right in the property editor.
  • You can also put your data in a QTableView object and hide the vertical row header with a hide() function. Here is the sample code,

     QTableView *empview = new QTableView();
     empview->verticalHeader()->hide();
    

0 comments:

Post a Comment