Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pakulo от Май 10, 2007, 14:09



Название: Style Sheet
Отправлено: pakulo от Май 10, 2007, 14:09
Для QTabBar и QScrollBar не создано стилей, можно ли как-то это исправить? Ну добавить свои функции...
Есть информация в каких версиях они появляться ?


Название: Style Sheet
Отправлено: goer от Май 10, 2007, 14:45
Во первых, стили и листы стилей это немного разные средства для достижения одной цели - изменить внешний вид стандартных виджетов.

Во вторых, внешний вид QTabBar и QScrollBar можно поменять переопределив QStyle::drawPrimitive() (QStyle::PE_FrameTabBarBase) и QStyle::drawControl() (QStyle::CE_TabBarTab, QStyle::CE_TabBarTabLabel, QStyle::CE_ScrollBarSlider etc.)

В третьих, по поводу переопределения через листы стиле не юзал, ищи сам.

В четвертых, мне непонятна фраза "Ну добавить свои функции..." поэтому если вопрос был в другом, то сформулируй его иначе, понятнее :)


Название: Style Sheet
Отправлено: pakulo от Май 10, 2007, 14:54
Написал что в голову пришло, потому как спешил очень и хотел запостить вопрос...

2. Это понятно, я так и собирался делать.

3. Вот именно это мне и нужно, но по ходу сделать так пока не возможно. Класс QStyleSheet переопределить нельзя.

4. Все правильно понял. Я имел ввиду переопределить класс и написать свои функции для отрисовки нужных элементов.


Название: Style Sheet
Отправлено: goer от Май 10, 2007, 15:06
QStyleSheet это вобще из 3-й кути чтоли? В любом случае переопределять его и не нужно.
Вообще насчет листов стилей, у меня сложилось такое впечатление что это типа скриптов (впрочем как и все в вебе) для быстренького (и соотвествено поверхностного) решения задачи.


Цитировать
Я имел ввиду переопределить класс и написать свои функции для отрисовки нужных элементов.


Если есть время, то лучше потрать его на изучение стилей. Переопределять вид виджета в paintEvet конечно можно в определенных ситуациях, но чаще - нежелательно, особенно на фоне такого мощноого средства, как QStyle.


Название: Style Sheet
Отправлено: pakulo от Май 10, 2007, 15:16
Цитата: "goer"
QStyleSheet это вобще из 3-й кути чтоли? В любом случае переопределять его и не нужно.
Вообще насчет листов стилей, у меня сложилось такое впечатление что это типа скриптов (впрочем как и все в вебе) для быстренького (и соотвествено поверхностного) решения задачи.


Это класс, который унаследован от QWindowsStyle. Выполняет все тоже что и его потомок, но просто рисует элементы в зависимости от параметров которые были указаны в стилях.

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


Название: Style Sheet
Отправлено: goer от Май 10, 2007, 15:32
Ну все зависит от того насколько сильно скины будут отличаться друг от друга. Если по типу винампа то будет достаточно даже QPalette, который ты будешь настраивать параметрически, например считвая данные из файла своей "темы", если же скин меняет к тому же и расположение виджетов на форме, то тогда видимо труднее будет сделать параметрическую настройку стиля. Хотя опять таки все зависит от свобод и ограничений которые накладываются на задачу.

Например можно написать несколько(или один) стилей которые будут принимать параметры (такие как тексутры для кнопок или размер шрифтов на виджетах) или вобще все захардкодить :) Вообще из комбинации средств(листы стилей, стиль, спосбо настройки стилей) должно что то получится.

Некоторые математические открытия например так и были сделаны просто путем перебора всех возможных вариантов решения задачи. :)