Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] Использование скинов для диалоговых окон 
:(
    Опции темы
XavierElf
Дата 7.4.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Проблема заключается в том, что нужно сделать приложение с поддержкой скинов, то есть вместо стандартного заголовка и границ окна поставить свои. Для виджетов используемых в приложении подошло использование css стилей, а вот с диалогами проблема. Они поддерживают только свойство background. Есть ли возможность применения скинов для диалогов созданных в дизайнере?
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
JackYF
Дата 7.4.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(XavierElf @  7.4.2008,  17:30 Найти цитируемый пост)
а вот с диалогами проблема. Они поддерживают только свойство background. 

QDialog наследует QWidget. Как он может не поддерживать что-то, что поддерживает QWidget?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
XavierElf
Дата 8.4.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Цитирую Qt Assistant:

Цитата

QDialog 
Supports only the background, background-clip and background-origin properties.
If you subclass from QDialog, you need to provide a paintEvent for your custom QDialog as below:
 void CustomDialog::paintEvent(QPaintEvent *)
 {
     QStyleOption opt;
     opt.init(this);
     QPainter p(this);
     style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
 }
The above code is a no-operation if there is no stylesheet set.



Это сообщение отредактировал(а) XavierElf - 8.4.2008, 13:28
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
JackYF
Дата 8.4.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



XavierElf, чего-то я тогда не понял - проблема решена или нет? smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
XavierElf
Дата 8.4.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Нет, проблема не решена. Я хочу отрисовывать окно без использования стандартного фрейма, создаваемого менеджером окон.
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
JackYF
Дата 8.4.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(XavierElf @  8.4.2008,  16:50 Найти цитируемый пост)
стандартного фрейма, создаваемого менеджером окон. 

http://doc.trolltech.com/4.3/qt.html#WindowType-enum, Qt::FramelessWindowHint - оно?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
XavierElf
Дата 8.4.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Гм... Ну в принципе близко. Только вот со скином не совсем ясно. Ибо к сожалению CSS используемый в qt не полностью поддерживается. То есть стандартная модель позволяет задать 9 частей (верхний левый, верхний центральный, верхний правый, центральный левый, центральный, центральный правый, нижний левый, нижний центральный и нижний правый) а в qt можно использовать одну только цельную часть, которой максимум, что можно - это замостить бэкграунд. А мне бы хотелось чтоб угловые части были постоянны, а остальные можно было размножить повтором (repeat-x, repeat-y, repeat-xy). Со свойством border это реально сделать, но QDialog его не поддерживает :(
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
pilotnet
Дата 25.4.2008, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Какая операционная система ?
если линукс 
не плучается может из-за того что в линуксе
за оформлением окна отвечает не сама программа а
"window decorator"  под KDE есть  kde window decorator
под gnome   - gnome window decorator ??
PM MAIL   Вверх
XavierElf
Дата 28.4.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Цитата(pilotnet @  25.4.2008,  07:28 Найти цитируемый пост)
Какая операционная система ?если линукс не плучается может из-за того что в линуксеза оформлением окна отвечает не сама программа а"window decorator"  под KDE есть  kde window decoratorпод gnome   - gnome window decorator ??

Ну ось-то линукс(Kubuntu 7.10), но за оформление окна отвечает не только в линуксе window manager в виндузе тоже есть менеджер, который рисует рамку окна (яркий пример стили Windows XP). Вообще, конечно обойти менеджер окон как тут было выше подсказано можно через флаг Qt::FramelessWindowHint, но это не то что я хотел бы. В случае с этим флагом отрисовка декораций полностью ложится на плечи программиста, кроме того придётся переопределять все эвенты с которыми работает менеджер окон, а мне этого не хотелось бы делать. Как говорится, зачем изобретать велосипед? Я, конечно, в создании приложений с поддержкой скинов новичёк и не знаю, может быть это нормально переопределять события? Хотелось бы получить ответ от тех кто занимался(занимается) созданием приложений с поддержкой скинов.

--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
pilotnet
Дата 29.4.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



XavierElf,  не window manager а именно window decorator
Qt::FramelessWindowHint а эти флагом вы просто отключите резайз + перемещение и рисовку бордеров

В любом случае надо будет переопределять евенты и самому рисовать свои бордюры или не рисовать
на скинах !
как виндов менеджер определить  что нужно ресайзить или передвигать виджеты
если вы сами нарисовали бордюра а не он  ??

Все нужно делать самостоятельно 

Это сообщение отредактировал(а) pilotnet - 29.4.2008, 08:25
PM MAIL   Вверх
Любитель
Дата 29.4.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(pilotnet @  29.4.2008,  08:23 Найти цитируемый пост)
XavierElf,  не window manager а именно window decorator

Декоратор - понятие введённое компизом/берилом. В большинстве ВМ такое понятие отсутствует.


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 29.4.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(Любитель @  29.4.2008,  13:23 Найти цитируемый пост)
Декоратор - понятие введённое компизом/берилом. В большинстве ВМ такое понятие отсутствует. 

Эээ. Согласно документации по Qt, нет. Декорация - любое обрамление окна (borders, title etc.), и поэтому присутствует в любом виденным мною WM.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 29.4.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Речь не про куте smile Речь про виндоу менеджеры и декораторы как таковые. Рисует виндоу-менеджер. Как - зависит от конкретного ВМ. В тривиальных случаях (простейшие ВМ) - непосредственно. В более сложных (насчёт берила и пр. я погорячился - просто в более продвинутых ВМ) через дополнительную прослойку, дабы упростить конфигурабельность всей этой ерунды.


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.