0

システム: 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);

私が望むのは、通常モードと選択モードで Backgroundcolor と Textcolor を含む QTreeWidget のスタイルシートを設定することです。

ここのところ:

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 が機能する唯一の Case "color: .... " は、このケースです。

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

ただし、これは「選択済み」ステータスでは機能しません

4

1 に答える 1

0

私のアンサーはCSS用ではなくC ++にありますが、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 に答える