crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Qcss. Изображения саб-контролов у виджетов.
Andrewshkovskii
  опции профиля:
сообщение 9.8.2011, 10:34
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Репост отсюда.
При изменении CSS у виджета, у когорого есть какие-то саб-контролы (QComboBox - down_arrow и т.д.) убирается CSS текущей темы от ОС.
Т.е. саб-контролы из XP превращаются в саб-контролы из Win'98:

(border : 1px solid red)
Как это можно поправить? т.е. оставить изображение саб-контролов от текущей темы ОС?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.8.2011, 16:40
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Andrewshkovskii @ 9.8.2011, 13:34) *
Как это можно поправить?
Цитата
Замечание: В случае сложных виджетов, таких как QComboBox и QScrollBar, если одно свойство или субэлемент управления настраивается, то и все остальные свойства или субэлементы управления также должны настраиваться.
(из асистента)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 9.8.2011, 17:00
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


http://www.forum.crossplatform.ru/index.php?showtopic=7278
Вот недавно уже была тема.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 9.8.2011, 17:26
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


как-то можно получить текущее изображения для сабконтролов темы ОС из кода??А точнее, как бы этот самый пиксмап да использовать в Qcss?Ведь эти изображения сабконтролов можно получить из QStyle::StandardPixmap?
Если нет, то подскажите , пожалуйста, как быть в случае, что мне надо отобразить визуально то, что пользователь вводи не верную информацию в инпуты?
Плюс к тому-же, где можно посмотреть как выглядят whatsThis и statusTip виджетов?:)

Сообщение отредактировал Andrewshkovskii - 9.8.2011, 18:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 9.8.2011, 19:33
Сообщение #5


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Andrewshkovskii @ 9.8.2011, 18:26) *
как-то можно получить текущее изображения для сабконтролов темы ОС из кода??А точнее, как бы этот самый пиксмап да использовать в Qcss?
средствами qss твоя задача не решаема.

ОФФ:


Я много раз уже писал, что не нужно без надобности этот qss пользовать. Все чего добьетесь - это поломаете нативность отображения вашего приложения под разными платформами и даже разными стилями одной платформы.


Цитата(Andrewshkovskii @ 9.8.2011, 18:26) *
Если нет, то подскажите , пожалуйста, как быть в случае, что мне надо отобразить визуально то, что пользователь вводи не верную информацию в инпуты?
Просто изменяй в нужный момент палитру требуемого виджета (в твоем случае в качестве colorRole будет QPalette::Base)

Цитата(Andrewshkovskii @ 9.8.2011, 18:26) *
Плюс к тому-же, где можно посмотреть как выглядят whatsThis и statusTip виджетов?:)
Уточни, что конкретно ты хочешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 10.8.2011, 8:37
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Цитата(igor_bogomolov @ 9.8.2011, 19:33) *
Цитата(Andrewshkovskii @ 9.8.2011, 18:26) *
Если нет, то подскажите , пожалуйста, как быть в случае, что мне надо отобразить визуально то, что пользователь вводи не верную информацию в инпуты?
Просто изменяй в нужный момент палитру требуемого виджета (в твоем случае в качестве colorRole будет QPalette::Base)

Цитата(Andrewshkovskii @ 9.8.2011, 18:26) *
Плюс к тому-же, где можно посмотреть как выглядят whatsThis и statusTip виджетов?:)
Уточни, что конкретно ты хочешь?

Как мне тогда решить идеологический вопрос о том, как отображать инпуты, где введены не верные значения? Через палитру? Хорошо, сейчас погляжу:)
Я предполагал использовать Qcss для визуального отображения , и какое-то из значений statusTip, whatsThis, toolTip для указания, какие же значения в инпут должны попасть. Но я не смог найти как же визуально выглядят statusTip, toopTip показывается с большим оффсетом от виджета..
P.S.: к сожалению, приложения будет работать в основном под виндами.. но и там есть 2 разных стиля (стиль Xp и стиль Vista)

Сообщение отредактировал Andrewshkovskii - 10.8.2011, 8:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 11.8.2011, 8:53
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


С палитрой беда вышла. Если меняешь палитру, то все чилды (например, QCalendarWidget у QDateTimeEdit) тоже её меняет, что не приемлимо. Есть workaround такой :
Положить за виджет QFrame и ему красить границы.
Только проблема с тем, что программно я не нашел как это сделать, т.е. сначала надо найти позицию виджета в лейауте (QGridLayout, QFormLayout, QVbox, QHBox..) но это, видимо, не возможно.
(хотя точнее сказать - нет простого метода это сделать, найти-то перебором всегда можно)

Сообщение отредактировал Andrewshkovskii - 11.8.2011, 9:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.1.2021, 18:30