Название: [РЕШЕНО] Style sheets
Отправлено: braboar от Июнь 17, 2011, 14:20
Доброго времени суток всем! Сделал вот такой тест, по нажатию check'а должен меняться цвет фона у label: Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); ui->label->setProperty("alarm", false);
QString css = QString("QLabel { border: 1px solid yellow;\n"); css += "background-color: gray;\n"; css += "color: yellow\n}\n"; css += "QLabel[alarm=\"true\"] { background-color: red }\n"; css += "QLabel[alarm=\"false\"] { background-color: gray }\n"; ui->label->setStyleSheet(css); bool al = ui->label->property("alarm").toBool(); qDebug("al=%d", al); }
void Dialog::on_checkBox_toggled(bool checked) { if (checked) { ui->label->setProperty("alarm", true); } else { ui->label->setProperty("alarm", false); } bool al = ui->label->property("alarm").toBool(); qDebug("al=%d", al); }
а ничего не меняется. Что я делаю не так?
Название: Re: Style sheets
Отправлено: GreatSnake от Июнь 17, 2011, 14:36
Имхо, так будет проще: C++ (Qt) #if 0 QString css = QString("QLabel { border: 1px solid yellow;\n"); css += "background-color: gray;\n"; css += "color: yellow\n}\n"; css += "QLabel[alarm=\"true\"] { background-color: red }\n"; css += "QLabel[alarm=\"false\"] { background-color: gray }\n"; ui->label->setStyleSheet(css); #else ui->label->setStyleSheet( "QLabel { border: 1px solid yellow;" "background-color: gray;" "color: yellow }"; "QLabel[alarm=\"true\"] { background-color: red }" "QLabel[alarm=\"false\"] { background-color: gray }" ); #endif
Название: Re: Style sheets
Отправлено: LisandreL от Июнь 17, 2011, 15:09
Сделал вот такой тест, по нажатию check'а должен меняться цвет фона у label: а ничего не меняется. Что я делаю не так? Подозреваю, что стиль при изменении проперти не пересчитывается. Попробуйте в конце on_checkBox_toggled стиль «передёрнуть»: C++ (Qt) ui->label->setStyleSheet( ui->label->styleSheet() );
Название: Re: Style sheets
Отправлено: braboar от Июнь 17, 2011, 15:59
LisandreL, именно так, спасибо, заработало! :) Весьма благодарен!
Стили задаются во время создания элемента? Нет ли операции вроде 'update' или 'repaint'?
Название: Re: Style sheets
Отправлено: LisandreL от Июнь 17, 2011, 16:37
Нет ли операции вроде 'update' или 'repaint'? Есть и тот и тот. Пересчитывают ли они стили я думаю вы и сами сможете.
|