Я хочу включить свой собственный класс виджетов для таблиц стилей, при этом я не говорю о setStyleSheet(qss)
, а о селекторах в таблице стилей qss. Понятно, что я должен заменить "::" на "--" в пространствах имен.
Здесь ( Таблица стилей Qt для пользовательского виджета ) я нашел аналогичный вопрос, но это > 4 года. На основании ответа у меня есть несколько подробных вопросов:
a) Является ли опубликованный подход с переопределенным paintEvent
все еще действительным (Qt5.6/5.7), из https://stackoverflow.com/a/8817908/356726
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
б) В том же потоке ( https://stackoverflow.com/a/22094319/356726 ) сказано, что я не нужно переопределять paintEvent
. Хорошо, приводит меня к: b1) вредно ли переопределять paintEvent
в любом случае, даже с QFrame
? б2) Что с другими базовыми классами, например. QTableView
? Что заставляет QFrame
играть именно эту роль?
c) кто-нибудь нашел официальную документацию Qt по этой теме. Хороший код в a, но откуда он взялся? (здесь) Честно говоря, я не понимаю, что он делает.
-- Редактировать --
Даниэль указал источник этого волшебного paintEvent
фрагмента здесь (QWidget
параграф). Интересно, что то же самое ("поддерживает только ..") сказано и для QDialog
, что может означать, что я должен использовать фрагмент кода и там. Я не понимаю, почему они не добавляют этот фрагмент в paintEvent
из QWidget
по умолчанию.