スタイルシート用に独自のウィジェット クラスを有効にしたいのですが、これは ではなく、 qsssetStyleSheet(qss)
スタイルシートのセレクターです。名前空間の "::" を "--"に置き換える必要があることは理解されています。
ここ (カスタム ウィジェットの Qt スタイルシート) 同様の質問を見つけましたが、それは 4 年以上前のものです。答えに基づいて、いくつかの詳細な質問があります。
a) https://stackoverflow.com/a/8817908/356726から、オーバーライドされた公開されたアプローチはpaintEvent
まだ有効ですか(Qt5.6/5.7)
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
b) 同じスレッド ( https://stackoverflow.com/a/22094319/356726 ) で、オーバーライドする必要はないと言われていますpaintEvent
。わかりました、私に導きます:b1)paintEvent
とにかくオーバーライドするのは有害QFrame
ですか?b2) 他の基本クラスとは何QTableView
ですか? QFrame
この特定の役割を持つ理由は何ですか?
c)そのトピックに関する公式の Qt ドキュメントを見つけた人はいますか? a の素敵なコードですが、それはどこから来たのですか? (ここ) 正直なところ、私はそれが何をするのか理解していません。
- 編集 -
paintEvent
ダニエルは、その魔法のスニペットのソースをここ(QWidget
段落)で指摘しています。同じ( 「サポートのみ..」)が に対して言われているのは興味深いことです。QDialog
これは、そこでもスニペットを使用する必要があることを意味する可能性があります。デフォルトでそのスニペットをpaintEvent
ofに追加しない理由がわかりません。QWidget