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 для веб-страницы.