19

暗い背景をQLabel設定する Qt スタイルシートがあります。

QLabel {
background: black;
color: white;
}

URL が埋め込まれたテキストを追加して を に設定するまで、これは問題なく機能Qt::TextFormatQt::RichTextます。リンクはデフォルトの濃い青で表示されますが、これは暗い背景では読みにくいものです。

次のようなスタイルシートを介してカスタマイズしてみました。

a { color: white; }
QLabel!visited { color: white; }

しかし、これは何の効果もありません。うまくいくように見えることの1つは、アプリケーションのQPalette次の変更です。

QPalette newPal(qApp->palette());
newPal.setColor(QPalette::Link, Qt::white);
newPal.setColor(QPalette::LinkVisited, Qt::white);
qApp->setPalette(newPal);

ただし、これには色をハードコードする必要があります。代わりにスタイルシートから色を設定する方法はありますか?

編集:

パレットのカスタマイズに関するさらなる問題を発見しました。ウィジェットのパレットを変更したいだけの場合 (上記のサンプルの代わりwidgetqApp)、これは機能しません。アプリ内の他のすべてに影響を与えたくないQLabelsので、パレットの変更をこのウィジェットに制限するにはどうすればよいですか?

4

4 に答える 4

7

を明示的に設定することにほとんど成功していませQPaletteん。アプリケーション全体に設定すると機能しますが、ウィジェットに設定すると機能しません。結局のところ、私が必要としていた最も簡単な方法は、代わりに HTMLのサブセットをサポートするQTextBrowserを使用することでした。次に、通常の CSS スタイルシートを使用してリンクの色をオーバーライドできます。

QTextBrowser browser;
// IMPORTANT! - set the stylesheet before the content
browser->document()->setDefaultStyleSheet("a {color: white; }");
browser->setText(html);
于 2011-04-01T08:01:00.707 に答える
2

短い答えはノーです。最近、私はこれをしなければなりませんでした。

  1. QLabel!visitedQt は QLabel が訪問されたかどうかを追跡しないため、機能しません。
  2. QLabel { color: ... }リンクでは機能しません。理由はわかりませんが、私が見つけたのは、QPalleteこの場合に使用する提案だけです。
于 2011-03-31T09:39:19.403 に答える