Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Dodge от Октябрь 16, 2007, 12:40



Название: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 16, 2007, 12:40
Я знаю что можно читать свойства в css...

ну например в css:
Код:
.QPushButton["flat=true"] {
    color: red;
};
тут читаем, а как писать?


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 17, 2007, 13:51
ну неужеле нихто не использует таблици стилей для оформления виджетов?...
ап


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: LestorN от Октябрь 17, 2007, 13:58
А зачем? Пример для чего это может быть нужно, а то я голову сломал...


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Tonal от Октябрь 17, 2007, 15:27
CSS это не язык программирования.
Это язык описания отображения.
Поэтому писать свойства с его помощью бессмысленно.

Лучше опиши, чего именно ты пытаешься добиться?
Как должно выглядеть то, что ты пытаешься оформить этим css-ом?


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 17, 2007, 20:57
CSS это не язык программирования.
Это язык описания отображения.
Поэтому писать свойства с его помощью бессмысленно.

Лучше опиши, чего именно ты пытаешься добиться?
Как должно выглядеть то, что ты пытаешься оформить этим css-ом?

Объясняю, через css, можно описать внешний вид виджетов(это например может использовться в скинах), в Qt есть так сказать - стандартный набор параметров задаваемых для СТАНДАРТНЫХ(входящих в поставку) виджетов. У многих виджетов есть свои собственные свойства которые можно задать через css.
Задать внешний вид виджета можно при помощи функциии - setStyleSheet( QString style ).
Теперь объясню в чем проблема, я написал свой виджет, у которого есть например свойства не тока - color backgroundcolor итд. а еще и например box-color или чтото  этом роде(пример). Соответственно мне хочется чтобы я мог в томже css, я мог написать box-color: lime. Я надеюсь суть ясна?


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Tonal от Октябрь 18, 2007, 06:42
Соответственно, ты в своём виджете должен подхватывать текущий css и отрисовываться в зависимости от того, что там написано.

Кроме того, у меня есть некоторые сомнения в том, что можно использовать в css-ках произвольные свойства.
Их набор описан в доках и про его расширение я ничего там не видел.
Хотя было бы круто. ;-)


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 18, 2007, 13:37
Соответственно, ты в своём виджете должен подхватывать текущий css и отрисовываться в зависимости от того, что там написано.

Кроме того, у меня есть некоторые сомнения в том, что можно использовать в css-ках произвольные свойства.
Так, уточняю... я незанимаюсь парсингом css, за меня это делает встроенный css парсер.
Онже выстовляет свойства виджетов, такие как: шрифт, цветовая гамма, отступы, граници итд...
А рисует это все - сам виджет.

Я бы порекомендовал вам посмотреть примеры stylesheet'а из какталога examples в корне каталога qt. Там очень наглядно все видно.

Их набор описан в доках и про его расширение я ничего там не видел.
Хотя было бы круто. ;-)
Я тоже просмотрел все доки, тоже ничего про расширение не увидел... НО!
Свойства объекта ( продекларированные при помощи макроса Q_PROPERTY() ), css парсер узнает, если в css идет чтение этих свойств.
например:
Код:
.QPushButton["flat=true"] {
    ...
};
В этом примере стиль применится только для тех кнопок, у которых значение свойства flat равно true.

Я пробовал создавать пользовательские классы, с пользовательскими свойствами. Все работае на "Ура".

Так если парсер может определить значение свойства любого класса(речь идет о классах наследованных от QObject'а), то следовательно можно сделать вавод, что с помощью css можно и менять эти свойства. Весь вопрос - КАК?

Перепробовал массу вариантов, у меня ничего не вышло.


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Lion от Октябрь 19, 2007, 14:39
CSS-ом менять свойства нельзя скорее всего, т.к. он для этого не предназначен. У меня другая проблема, при включенном css вся прога сильно тормозит. Никто с этим не сталкивался?


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Tonal от Октябрь 19, 2007, 16:46
Смотри "The Style Sheet Syntax"/"Setting QObject properties"
Для 4.3 таки можно установить пользовательские свойства.

А на счёт кто чего рисует - проще исходники посмотреть.
Порассматривай, например, src\gui\styles\qstylesheetstyle.cpp - оч. просветляет. ;-)


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 20, 2007, 01:32
CSS-ом менять свойства нельзя скорее всего, т.к. он для этого не предназначен.
Что значит "не предназначен"? ... что значит "по-моиму" и "скорее всего"?
Он предназначен для задания стиля, тык наверняка тролли позаботелись о "виджетописателях".

У меня другая проблема, при включенном css вся прога сильно тормозит. Никто с этим не сталкивался?
в кутэ, покрайней мере 4х версиях, просто какаято беда с отрисовкой виджетов, причем я пробовал и с каэсэс и без него, один хрен тормозит(извените)... достаточно запустить экзампл "richtext", запихнуть туда кусок текста из книги, и можно наслаждаццо превосходным слайдшоу при выделении больших блоков текста...

А на счёт кто чего рисует - проще исходники посмотреть.
Порассматривай, например, src\gui\styles\qstylesheetstyle.cpp - оч. просветляет. ;-)
Зачем лесть в исходники, вот по каэсэс есть превосходный экзампл - stylesheet, разобравшись с ним с каэсэс - все ясно...

Смотри "The Style Sheet Syntax"/"Setting QObject properties"
Для 4.3 таки можно установить пользовательские свойства.
Ни в доках, ни в блогах девелоперов, никаких упомянаний не нашел. ...пойду жаловаццо в оон ;D

Короче ждем куте4.4, можт там в манах чтонибуть и появиццо... вообще это уже не первый пробел в манах куте, например про скриптовый модуль тоже очень мало написанно, экзамплы приктически не какого представления не дают о принципе разработки с исп. данного модуля... разбирался месяц, прежде чем чтото путное смог написать.


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Tonal от Октябрь 20, 2007, 16:18
Э... пример stylesheet о том, как использовать css для стандартных виджетов. Как писать новые и в них использовать css, там вроде совсем нет.

Да, версия у тебя какая?
У меня 4.3.1 и в разделе "The Style Sheet Syntax" есть подраздел "Setting QObject properties".
Всё находиться довольно просто...

Ну а про тормоза - это да, есть именно с css. Бум надеяться на 4.4


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Октябрь 21, 2007, 11:55
Э... пример stylesheet о том, как использовать css для стандартных виджетов. Как писать новые и в них использовать css, там вроде совсем нет.

Да, версия у тебя какая?
У меня 4.3.1 и в разделе "The Style Sheet Syntax" есть подраздел "Setting QObject properties".
Всё находиться довольно просто...

Ну а про тормоза - это да, есть именно с css. Бум надеяться на 4.4
Вот кстати 4.3.0, и с каэсэсом тормозов особо не прибывляеццо


Название: Re: Можноли менять свойства объектов через css - файл?
Отправлено: Dodge от Ноябрь 02, 2007, 14:40
Э... пример stylesheet о том, как использовать css для стандартных виджетов. Как писать новые и в них использовать css, там вроде совсем нет.

Да, версия у тебя какая?
У меня 4.3.1 и в разделе "The Style Sheet Syntax" есть подраздел "Setting QObject properties".
Всё находиться довольно просто...

Ну а про тормоза - это да, есть именно с css. Бум надеяться на 4.4
в доках этот раздел появился после 4.3, отсюда и топ родилса.

Всем спасибо. Разобрался.
перед именем своего пропертя ставим qproperty-. то получается сие:
mywidget.h
Код:
class MyWidget : public {
    Q_OBJECT
    Q_PROPERTY( QColor color READ color WRITE setColor )
...
    void setColor( QColor c );
    QColor color();
};
style.css
Код:
MyWidget {
    qproperty-color: #ff9c00
}