tags:

views:

1140

answers:

4

i want a table cell to have just an icon without any text.

i see the QTableWidgetItem class has a method to align the text (int QTableWidgetItem::textAlignment () const)

i find no way to adjust the placement of the icon (which seems to get stuck on the left -- even where there is no text in the cell)

look at the Status and Energy columns.

alt text

+1  A: 

Hey,

I think it's the basic behavior of the QTableWidgetItem that doesn't allow you to change anything related to the icon...

Have a look at the example "Star Delegate Example" from Qt, maybe you'll find something interesting for your problem ! It's a little bit of job, but you should be able to "draw" the cell in a different way when it does not contain any text !

Hope this help a bit!

Andy M
A: 

It seems you must subclass QTableWidgetItem and rewrite the paintEvent function where you will be able to draw icon where you want.

Patrice Bernassola
A: 

You need to use a delegate

cheez
A: 

You can affect the position of the icon in relation to the text via the style options.

If the QTableWidgetItem is constructed without any text (via the constructor that does not accept a text argument), then the Qt::DisplayRole data item is not set and the text will not be displayed nor will it affect the icons display rectangle.

I was able to affect the position of the QTableWidgetItem's icon by subclassing the QTableWidget, overriding the viewOptions method and setting the decorationAlignment field of the view options, like this:

QStyleOptionViewItem MyTableWidget::viewOptions() const
{
    QStyleOptionViewItem option = QTableWidget::viewOptions();
    option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
    option.decorationPosition = QStyleOptionViewItem::Top;
    ...
    return option;
}
Avalanchis