Название: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 11:49 Что за QMacStyle.
В Assistant упоминается, а класса такого нет! === QT 4.5.1 / Windows Название: Re: QMacStyle Отправлено: spirit от Июня 16, 2009, 12:00 ну так он чисто под маком и пашет как ХР-ишный стиль чисто под виндой.
Название: Re: QMacStyle Отправлено: mugabe от Июня 16, 2009, 12:03 Что за QMacStyle. В Assistant упоминается, а класса такого нет! === QT 4.5.1 / Windows http://doc.trolltech.com/4.5/qmacstyle.html В виндовом ассистенте его нет. Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 12:21 ну так он чисто под маком и пашет как ХР-ишный стиль чисто под виндой. Не понимаю. Бред какой-то. Я делаю что-бы приложение работало под разными платформами. Но пишу на Windows XP. У меня есть меню для смены стилей. Если стиль недоступен(под текущей платформой), то в меню он не отображается, но в коде он есть - содание и применение стиля на нажатие пункта меню. Я работаю на XP, но QWindowsVistaStyle как класс - есть. Как мне сделать правильно. И каких еще стилией нет в моем Assistant. Название: Re: QMacStyle Отправлено: spirit от Июня 16, 2009, 12:23 маковский стиль так же как и ХР-шный стиль используют специфическое АПИ,
которое не доступно под другими платформами, например, под линуксом нельзя заюзать ни маковский стиль ни ХР-шный. Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 12:36 маковский стиль так же как и ХР-шный стиль используют специфическое АПИ, которое не доступно под другими платформами, например, под линуксом нельзя заюзать ни маковский стиль ни ХР-шный. Это и так понятно! Хотя и бред - в том смысле, что все классы стилей должны быть доступны везде. Просто если данного стиля нет(использует специфическое АПИ), он подменяется на некоторый default. Так сделано с QWindowsVistaStyle, он тоже использует специфическое АПИ. Я работаю под XP, и если выставлю QWindowsVistaStyle, то получу QWindowsStyle (хотя правильнее было бы получить QWindowsXPStyle) Так, как мне правильно сделать, чтобы под разными системами у меня в меню были все возможные доступные стили для текущей системы Название: Re: QMacStyle Отправлено: spirit от Июня 16, 2009, 13:40 QWindowsVistaStyle тоже виндовый, поэтому на других платформах его не будет.
Название: Re: QMacStyle Отправлено: spirit от Июня 16, 2009, 13:44 пользуй QStyleFactory::keys для получения стилей.
Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 16:00 пользуй QStyleFactory::keys для получения стилей. Спасибо, то что надо! Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 19:20 QStyleFactory - Как всегда не доделано!
Короче не решаются задачи: 1) Определение имени(ключа) от стиля. 2) создание стилей new QCDEStyle(true); new QMotifStyle(true); Название: Re: QMacStyle Отправлено: ритт от Июня 16, 2009, 19:35 1) при чём тут QStyleFactory?
2) что за хня? Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 21:16 1) при чём тут QStyleFactory? Прочитай сначала2) что за хня? Название: Re: QMacStyle Отправлено: Rcus от Июня 16, 2009, 21:20 Ну что можно сказать... с ключами конечно засада, а вторую проблему я что-то не понял, апкасты уже отменили?
Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 21:28 Цитировать QMotifStyle::QMotifStyle ( bool useHighlightCols = false ) Constructs a QMotifStyle. If useHighlightCols is false (the default), the style will polish the application's color palette to emulate the Motif way of highlighting, which is a simple inversion between the base and the text color. А что такое апкасты я не понял. Название: Re: QMacStyle Отправлено: spectre71 от Июня 16, 2009, 21:59 Короче пока делаю так:
Код
{.....} - означает делаем чего-то Style - некоторый стиль, например текущий. Немного нарыл в qstylefactory.cpp. Но там очередной бред: Код
Думал просто так воспользуюсь: #ifndef QT_NO_STYLE_MAC #endif Ага, разбежался. Двойное отрицание, кому это пришло в голову. QT_NO_STYLE_MAC не определен не потому что есть QMacStyle, а потому что класс QMacStyle не включен в виндовые исходники. Название: Re: QMacStyle Отправлено: spirit от Июня 17, 2009, 08:24 есть хороший пример QTDIR/examples/widgets/styles, глянь как тролли стили переключают.
Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 09:26 есть хороший пример QTDIR/examples/widgets/styles, глянь как тролли стили переключают. Там просто переключение стилей. Используют QStyleFactory. О проблемах с ним я писал выше.А хочется: 1) В главном меню - подменю со списком всех доступных стилей 2) В списке стилей отмечен текущий стиль 3) сохранение в ini информации о выбранном стиле и установка его при загрузке (с пометкой его в меню) 4) Если в ini информации о стиле нет при загрузке стиль не меняем, но помечаем текущий в меню 5) Для стилей QCDEStyle и QMotifStyle при создании useHighlightCols=true К сожалению (4) и (5) через QStyleFactory не решается. Если бы проблема была только в этом - фиг с ней. Но мне необходимо точно знать текущий стиль для создания QPixmap с картинками "+"/"-" (раскрытие/свертывание узла дерева) которые я использую в своих компонентах. А вытащить их из ресурсов без линий соединяющих узлы дерева можно только если знаешь их размеры для текущего стиля: Код
Размеры вбиваются ручками и выбираются в зависимости от стиля, иначе никак! Название: Re: QMacStyle Отправлено: spirit от Июня 17, 2009, 09:35 ну спервыми 3 пунктами все просто.
>>4) Если в ini информации о стиле нет при загрузке стиль не меняем, но помечаем текущий в меню это да, проблема, хз как узнать текущий стиль. можно поизвращаться с кастами, но имхо это лажа полная >>5) Для стилей QCDEStyle и QMotifStyle при создании useHighlightCols=true тоже не проблема, Rcus уже предложил решение, вот пример, если оно(решение) тебе было не понятно Код
Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 09:51 Честно говоря setUseHighlightColors, я как-то не заметил, но без qobject_cast не обойтись (хотя для QMotifStyle это не страшно, он вроде всегда есть).
Но главная проблема не решена. И здесь без qobject_cast естественно не обойтись, еще и под #ifdef, поскольку не все QStyle классы доступны для некоторой текущей сборки. Я выше уже привел решение которое использую для проверки текущего стиля, но тестировал его только под виндой. Если кто проверит под другими платформами и подправит, буду очень рад :) Название: Re: QMacStyle Отправлено: ритт от Июня 17, 2009, 10:06 а потом пользователь запустить всё это дело под беспином или оксигеном и...?
Название: Re: QMacStyle Отправлено: Rcus от Июня 17, 2009, 10:40 Я вообще немного другое решение имел ввиду
Код А для получения ключа стиля можно написать немного хитрый код на основе QMetaObject::className(), но он будет настолько грязным хаком, что руки не поднимаются mockup писать :) А проблему с зависимостью декораций от стиля надо как-то иначе решать, ибо стилей много, только интересно зачем нужны данные примитивы в отрыве от QTreeView. Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 11:00 а потом пользователь запустить всё это дело под беспином или оксигеном и...? Я не знаю что такое беспин и оксигеном! И какие проблемы с этим связаны. Поясни пожалуйста. Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 11:12 А проблему с зависимостью декораций от стиля надо как-то иначе решать, ибо стилей много, только интересно зачем нужны данные примитивы в отрыве от QTreeView. Базовых стилей вроде пока 9 (или я не прав???), для мобильных систем мне не нужны!А данные примитивы мне нужны для своих компонентов: 1) ToolBox - нечто подобное Qt Designer -> Widget Box 2) И мой PropertyEditor - уже почти переписал под QT с Borland C++ Builder 10 Название: Re: QMacStyle Отправлено: ритт от Июня 17, 2009, 11:17 а потом пользователь запустить всё это дело под беспином или оксигеном и...? Я не знаю что такое беспин и оксигеном! И какие проблемы с этим связаны. Поясни пожалуйста. то же, что и QtCurve, и QMacStyle Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 11:57 то же, что и QtCurve, и QMacStyle QtCurve. На сколько я понял там есть свой класс стиля(или стилей) и если я буду его подключать, то добавлю в свой обработчик стилей. Я не прав?Название: Re: QMacStyle Отправлено: ритт от Июня 17, 2009, 12:08 каким образом? :)
Название: Re: QMacStyle Отправлено: spectre71 от Июня 17, 2009, 12:25 каким образом? :) Может я чего не понимаю.Насколько я понял QtCurve - некоторая тема устанавливаемая в систему. У нее должен быть свой API для интеграции стилей. Иначе откуда возьмутся новые стили в моем приложении? Название: Re: QMacStyle Отправлено: niXman от Июня 26, 2009, 07:24 Я ваще торможу по ходу)
Кут вроде старается не использовать нативных АПИ. А тут на тебе! Мне кажется тут дело в лицензии. Мас стиль может быть доступен только в коммерческой версии. Название: Re: QMacStyle Отправлено: spirit от Июня 26, 2009, 08:30 у меня коммерческая версия под винду и его нет. :)
дело в нативном АПИ, заглянь в реализацию, например, стиля ХР или висты. Название: Re: QMacStyle Отправлено: spirit от Июня 26, 2009, 09:12 что бы не быть голословным, вот что написано в ассистанте для:
QWindowsXPStyle Цитировать Warning: This style is only available on the Windows XP platform because it makes use of Windows XP's style engine. QWindowsVistaStyleЦитировать Warning: This style is only available on the Windows Vista platform because it makes use of Windows Vista's style engine. QMacStyleЦитировать Warning: This style is only available on Mac OS X because it relies on the HITheme APIs. Название: Re: QMacStyle Отправлено: Nimbus от Июня 01, 2010, 08:32 Бамп.
Хочется, чтобы под Windows 7 был доступен маковский стиль Aqua. Если в стандартных стилях его нет, тогда может быть кто-нибудь поделится Stylesheet'ом для его реализации? Название: Re: QMacStyle Отправлено: BigZ от Июня 01, 2010, 10:53 Бамп. А по лицензии мака разве можно их стиль вытаскивать в НЕ маковские приложения?Хочется, чтобы под Windows 7 был доступен маковский стиль Aqua. Если в стандартных стилях его нет, тогда может быть кто-нибудь поделится Stylesheet'ом для его реализации? Там же лицензией всё закрыто? Или я не прав? |