Qt 4.8.5 QLabel setStylesheet игнорирует унаследованный шрифт

Я хочу установить некоторые свойства стиля через setStylesheet, например, границы

label.setStylesheet("border: 1px solid white;");

После этого мой ярлык имеет белую рамку, но все свойства шрифта, установленные в родительском виджете (QDesigner), игнорируются!

qDebug() << label->font().family();
qDebug() << label->font().rawName();

оба печатают правильное семейство шрифтов, но это не применяется после вызова функции setStylesheet.

То же самое с цветами. Цвета, установленные с помощью QPlatte в Designer, не используются, если я устанавливаю некоторые другие свойства с помощью setStylesheet().

Я не знаю, но, похоже, нам не следует смешивать обе технологии, или я здесь что-то не так делаю.

1 ответ

К сожалению, установка одного свойства в таблице стилей виджета обычно приводит к необходимости установки всех свойств стилей, а также к нарушению наследования для любого из этих свойств. Я не мог воспроизвести проблему наследования шрифтов в моей собственной среде (какую версию Qt вы используете?), Но следующий код должен помочь вам решить эту проблему.

//  Get the color of the label's parent (this).
QColor color = this->palette().windowText().color();
QString colorString = "rgb(" +
                      QString::number( color.red() ) + "," +
                      QString::number( color.green() ) + "," +
                      QString::number( color.blue() ) + ")";

//  Get the Font of the label's parent (this).
QFont font = this->font();

//  Set the Font and Color.
label->setFont( font );
label->setStyleSheet( "color: " + colorString + "; border: 1px solid white;" );

Лично я стараюсь сохранить все свои стили в редакторе форм для определенных стилей объекта формы или в таблице стилей, которая загружается на верхнем уровне, во многом как CSS для веб-страницы.

Другие вопросы по тегам