0

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

我创建了一个自定义小部件,我在 QTreeView 中使用

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 作品的唯一案例“颜色:....”就是这种情况

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

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

4

1 回答 1

0

我的分析器在 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然后单击参数中的 ColorGroup 类型,您将在这里:http://qt-project.org/doc/qt-4.8/qpalette.html#ColorGroup-enum

祝你好运 !

于 2015-02-25T02:20:05.037 回答