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

Posted

技术标签:

【中文标题】如何设置QTableWidget行垂直标题项的背景和前景色【英文标题】:How to set background and foreground color of QTableWidget row Vertical Header Item 【发布时间】:2013-05-29 16:37:21 【问题描述】:

我正在尝试设置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 是垂直标题项时,此代码不会更改,但当它是常规单元格时,它具有所需的效果。如何设置垂直标题项的背景和前景?

【问题讨论】:

不幸的是,没有什么强制QStyle 使用调色板,颜色可以硬编码到样式本身中。不看它的源代码很难知道(QGtkStyle 我认为)。 样式表有用吗?有关示例,请参见 this。 @thuga 我能够获得样式表来更改 BG,但我仍在尝试弄清楚如何使其仅适用于某些行 仍然没有骰子。我无法为垂直标题项分配对象名称,因为它们不是QObjects,因此我不知道如何只执行某些行。 这一行是选定行还是随机行? 【参考方案1】:

我认为你可以通过知道它是“AccessibleName”来轻松定位特定项目,你可以试试这个:

QTableWidgetItem#YourAccessibleName 

/* style definitions */


【讨论】:

如何获取/设置 AccessibleName? 看起来非QObjects 不能有可访问的名称【参考方案2】:

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

所以在表格小部件的构造中添加类似的东西

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

【讨论】:

对语法不清楚,对C++语法不是很熟悉。

以上是关于如何设置QTableWidget行垂直标题项的背景和前景色的主要内容,如果未能解决你的问题,请参考以下文章

在 QTableView/QTableWidget 中:如何使交替行完全垂直填充表格?

如何启用/禁用 QTableWidget 的水平/垂直标题?

仅通过单击行标题选择 QTableWidget 行

表格未聚焦时如何设置QTableWidget单元格背景颜色?

QTableWidget::row() 未按预期运行

如何在实时数据输入期间将 QTableWidget 设置为始终滚动到底部