如何设置QTableWidget行垂直标题项的背景和前景色

时间:2013-05-29 16:37:21

标签: c++ qt qt4 qtablewidget qtablewidgetitem

我正在尝试设置QTableWidgetItem的背景和前景色,这是我QTableWidget行中的垂直标题项。以下代码不适用于作为垂直标题项的QTableWidgetItem,即使相同的代码适用于作为常规单元格的QTableWidgetItem

我在Fedora 17 x64 Gnome 3.4上使用Qt 4.8

static const QBrush AddedCellBackground = Qt::yellow;
static const QBrush AddedCellForeground = Qt::red;

void rowSelected()
{
    QTableWidgetItem *vertHeadItem = _getSelectedItemVerticalHeader();
    vertHeadItem->setForeground( AddedCellForeground );
    vertHeadItem->setBackground( AddedCellBackground );
}

vertHeadItem是垂直标题项时,此代码不会更改,但是当它是常规单元格时,它具有所需的效果。如何设置垂直标题项的背景和前景?

2 个答案:

答案 0 :(得分:0)

我认为您可以通过知道“AccessibleName”轻松定位特定项目,您可以尝试这样做:

QTableWidgetItem#YourAccessibleName {

/* style definitions */

}

答案 1 :(得分:0)

关于相同主题的问题Is it possible to change the colour of a QTableWidget row label?但对于PyQt我的解决方案是获取垂直标题的QTableWidgetItem并在那里设置背景和前景,但是只更改了前景,背景保持平滑的灰色渐变。可能风格是覆盖/忽略背景。指定不同的样式(例如Cleanlooks)修复了它。

所以添加类似于表格小部件的构造

QTableWidget::verticalHeader().setStyle(QStyleFactory::create("CleanLooks"))