Russian Qt Forum
Октябрь 02, 2024, 09:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можноли менять свойства объектов через css - файл?  (Прочитано 7204 раз)
Dodge
Гость
« : Октябрь 16, 2007, 12:40 »

Я знаю что можно читать свойства в css...

ну например в css:
Код:
.QPushButton["flat=true"] {
    color: red;
};
тут читаем, а как писать?
« Последнее редактирование: Октябрь 16, 2007, 12:42 от Dodge » Записан
Dodge
Гость
« Ответ #1 : Октябрь 17, 2007, 13:51 »

ну неужеле нихто не использует таблици стилей для оформления виджетов?...
ап
Записан
LestorN
Гость
« Ответ #2 : Октябрь 17, 2007, 13:58 »

А зачем? Пример для чего это может быть нужно, а то я голову сломал...
Записан
Tonal
Гость
« Ответ #3 : Октябрь 17, 2007, 15:27 »

CSS это не язык программирования.
Это язык описания отображения.
Поэтому писать свойства с его помощью бессмысленно.

Лучше опиши, чего именно ты пытаешься добиться?
Как должно выглядеть то, что ты пытаешься оформить этим css-ом?
Записан
Dodge
Гость
« Ответ #4 : Октябрь 17, 2007, 20:57 »

CSS это не язык программирования.
Это язык описания отображения.
Поэтому писать свойства с его помощью бессмысленно.

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

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

Соответственно, ты в своём виджете должен подхватывать текущий css и отрисовываться в зависимости от того, что там написано.

Кроме того, у меня есть некоторые сомнения в том, что можно использовать в css-ках произвольные свойства.
Их набор описан в доках и про его расширение я ничего там не видел.
Хотя было бы круто. ;-)
Записан
Dodge
Гость
« Ответ #6 : Октябрь 18, 2007, 13:37 »

Соответственно, ты в своём виджете должен подхватывать текущий css и отрисовываться в зависимости от того, что там написано.

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

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

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

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

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

Перепробовал массу вариантов, у меня ничего не вышло.
Записан
Lion
Гость
« Ответ #7 : Октябрь 19, 2007, 14:39 »

CSS-ом менять свойства нельзя скорее всего, т.к. он для этого не предназначен. У меня другая проблема, при включенном css вся прога сильно тормозит. Никто с этим не сталкивался?
Записан
Tonal
Гость
« Ответ #8 : Октябрь 19, 2007, 16:46 »

Смотри "The Style Sheet Syntax"/"Setting QObject properties"
Для 4.3 таки можно установить пользовательские свойства.

А на счёт кто чего рисует - проще исходники посмотреть.
Порассматривай, например, src\gui\styles\qstylesheetstyle.cpp - оч. просветляет. ;-)
Записан
Dodge
Гость
« Ответ #9 : Октябрь 20, 2007, 01:32 »

CSS-ом менять свойства нельзя скорее всего, т.к. он для этого не предназначен.
Что значит "не предназначен"? ... что значит "по-моиму" и "скорее всего"?
Он предназначен для задания стиля, тык наверняка тролли позаботелись о "виджетописателях".

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

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

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

Короче ждем куте4.4, можт там в манах чтонибуть и появиццо... вообще это уже не первый пробел в манах куте, например про скриптовый модуль тоже очень мало написанно, экзамплы приктически не какого представления не дают о принципе разработки с исп. данного модуля... разбирался месяц, прежде чем чтото путное смог написать.
Записан
Tonal
Гость
« Ответ #10 : Октябрь 20, 2007, 16:18 »

Э... пример stylesheet о том, как использовать css для стандартных виджетов. Как писать новые и в них использовать css, там вроде совсем нет.

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

Ну а про тормоза - это да, есть именно с css. Бум надеяться на 4.4
Записан
Dodge
Гость
« Ответ #11 : Октябрь 21, 2007, 11:55 »

Э... пример stylesheet о том, как использовать css для стандартных виджетов. Как писать новые и в них использовать css, там вроде совсем нет.

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

Ну а про тормоза - это да, есть именно с css. Бум надеяться на 4.4
Вот кстати 4.3.0, и с каэсэсом тормозов особо не прибывляеццо
Записан
Dodge
Гость
« Ответ #12 : Ноябрь 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
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.104 секунд. Запросов: 21.