GSS против property? |
Здравствуйте, гость ( Вход | Регистрация )
GSS против property? |
Mae Stro |
13.8.2009, 22:01
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 13.8.2009 Пользователь №: 1002 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток.
Вопрос, как настроить Qt так, чтоб смена property таки отображалась стилями GSS? У меня есть несколько однотипных кнопок на форме (наследники QPushButton). Задумалось мне выделить последнюю нажатую кнопку. Задал переменную в классе:
в эвенте на клик по кнопке прописал (bt - указатель на нажатую кнопку):
в файле стиля:
и... ничего. Проперти меняются, выделение цветом бордюра отсутствует. Только если выставить проперти до первого show() формы - тогда они есть. Смена проперти в рантайме игнорится, стиль кнопок не меняется. Ок, может быть, Qt не работает с динамическими свойствами? Определил свойство через Q_PROPERTY.
Ведь статику то движок перерисовывает, видно хотя бы по enabled! Реакция - ноль, стили не меняются. Ок, смодил код нажатия на кнопку:
то есть тупо присваиваю абстрактный стиль кнопке. ЗАРАБОТАЛО, стили начали меняться. Но ведь это ДЕЙСТВИТЕЛЬНО ТУПОЕ РЕШЕНИЕ. Как правильно решить вопрос? |
|
|
SABROG |
13.8.2009, 22:08
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Я думаю речь все таки о CSS, а не GSS.
ЗАРАБОТАЛО, стили начали меняться. Но ведь это ДЕЙСТВИТЕЛЬНО ТУПОЕ РЕШЕНИЕ. Я писал по этому поводу троллям, их официальный ответ был "This is not a bug." и привели мне код, который совершенно не в кассу. Типа я не умею готовить кошек. Может быть есть смысл еще раз напомнить об этом? Создай еще один багрепорт. |
|
|
Mae Stro |
13.8.2009, 23:20
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 13.8.2009 Пользователь №: 1002 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я думаю речь все таки о CSS, а не GSS. виноват, свой приватный термин опубликовал Все-таки CSS больше к HTML идет и в Qt юзается, а эти стили к движку предназначены. А что за код прислали? Если из доков, то это нуль. еще вариант - раскапывая setStyleSheet... так тоже работает... но увы, все ручная сборка
|
|
|
Tonal |
14.8.2009, 6:57
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Мне кажется, что update() - вполне правильное решение.
Правда звать его нужно в коде установки свойства: set_stage_active. А как иначе движек узнает о том, что свойство изменилось и нужно перерисовать виджет? |
|
|
SABROG |
14.8.2009, 8:08
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
А что за код прислали? Цитата This is not a bug. You should use something like this: QCheckBox:checked { border:1 solid red; } QCheckBox { border: 1 solid green; } instead you are using QLineEdit, which will not apply to QCheckBox. Best Regards, -- George Liu, Release Engineer Nokia, Qt Software Мне кажется, что update() - вполне правильное решение. Когда я пробовал в последний раз ни update() ни polish() результатов не давали. |
|
|
Mae Stro |
14.8.2009, 9:38
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 13.8.2009 Пользователь №: 1002 Спасибо сказали: 0 раз(а) Репутация: 0 |
Мне кажется, что update() - вполне правильное решение. Когда я пробовал в последний раз ни update() ни polish() результатов не давали. ну, на 4.5.2 этот код работает
...
А как иначе движек узнает о том, что свойство изменилось и нужно перерисовать виджет? Вообщето установка динамический свойств генерирует QDynamicPropertyChangeEvent По идее, разработчики должны были туда внести перерисовку по обстоятельствам, с минимальными накладными расходами. Однако у них там есть что-то, имеющее отношение к шрифтам - и все. А style()->polish(...) - это примение кувалды, чтоб забить гвоздик. |
|
|
Текстовая версия | Сейчас: 12.12.2024, 12:24 |