孩子的 QTreeWidget 样式表颜色

Posted

技术标签:

【中文标题】孩子的 QTreeWidget 样式表颜色【英文标题】:QTreeWidget Stylesheet Color for Childs 【发布时间】:2015-02-24 15:49:51 【问题描述】:

系统:Linux Mint,来自 Repo 的 QT Creator -> QT 版本 5.2,C++)

我创建了一个我在 QTreeView 中使用的 Customwidget

OwnItem *OI = new OwnItem;
QTreeWidgetItem *itemN = new QTreeWidgetItem();
ui->ProjektListe->addTopLevelItem(itemN);
ui->ProjektListe->setItemWidget(itemN, 0, OI);

我想要的是为 QTreeWidget 设置一个样式表,包括正常模式和选定模式下的 Backgroundcolor 和 Textcolor。

到目前为止:

QTreeWidget::item
    background-color: rgb(255, 255, 255);
    color: rgb(255, 255, 0);


QTreeWidget::item:selected
    background-color: #157efb;
    color: rgb(255, 0, 0);

问题是 Backgroundcolor 有效,Color (TextColor) 无效(在这两种情况下)。我知道,当单独设置子项的样式表时,这将不起作用,但小部件本身及其所有子项(一些标签和按钮)都是“样式表”免费的。

TextColor 作品的唯一案例“color: ....”就是这种情况

QWidget
    color: rgb(85, 0, 0);

但这不适用于“选定”状态

【问题讨论】:

【参考方案1】:

我的分析器是用 C++ 编写的,不是用于 CSS,但你可以创建一个 QPalette,然后使用函数 void QPalette::setColor ( ColorGroup group, ColorRole role, const QColor & color ) 设置你想要的值,所以对你来说,我应该是这样的:

QTreeWidget tree(a);
QPalette palette;
palette.setColor(QPalette::Window, QColor(255, 255, 255));
palette.setColor(QPalette::WindowText, QColor(255, 255, 0));
palette.setColor(QPalette::Highlight, QColor(255, 0, 0))
palette.setColor(QPalette::HighlightedText, QColor(0, 0, 255));

QList<QTreeWidgetItem> treeItems = tree.findChildren<QTreeWidgetItem*>();
    foreach (QTreeWidgetItem *w : treeItems) 
        w.setPalette(palette);
    

findChildren 将返回一个包含所有子项的列表到小部件,然后您可以设置调色板。要查找颜色组列表,您可以转到此处:http://qt-project.org/doc/qt-4.8/qpalette.html#setColor 然后单击参数中的颜色组类型,然后您将在这里:http://qt-project.org/doc/qt-4.8/qpalette.html#ColorGroup-enum

祝你好运!

【讨论】:

我刚刚实现了您的代码,但它也不起作用。我也找不到在 qtdocs 中设置前景色的任何示例。也许它不打算以这种方式工作。 (至少对于 QWidgets)。我刚刚实现了一个 QItemDelegate。到目前为止,这工作正常。另一种解决方案是使用Standart Items。在这种情况下,“颜色”属性也有效。我可以制作更多的列。 但是我的自定义 QWidget 有点复杂,所以用 QTreeWidgetItem 和 Columns 重新发明它并不是一件容易的事

以上是关于孩子的 QTreeWidget 样式表颜色的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4 中的多列(可能使用 QTreeWidget)

QTreeWidget childAt(int x, int y) 返回 NULL

如何使用样式表设置 qwidget 的背景颜色?

如何在 QTreeWidget 孩子上正确显示 QIcon?

Python(PyQT):如何在没有最后一个孩子的 QTreeWidget 中插入 XML 文件

qtreewidget设置正则表达式