如何设置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,但我仍在尝试弄清楚如何使其仅适用于某些行
仍然没有骰子。我无法为垂直标题项分配对象名称,因为它们不是QObject
s,因此我不知道如何只执行某些行。
这一行是选定行还是随机行?
【参考方案1】:
我认为你可以通过知道它是“AccessibleName”来轻松定位特定项目,你可以试试这个:
QTableWidgetItem#YourAccessibleName
/* style definitions */
【讨论】:
如何获取/设置 AccessibleName? 看起来非QObject
s 不能有可访问的名称【参考方案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 的水平/垂直标题?