Название: Как переключиться на стандартный Стиль Отправлено: Hort от Июль 18, 2008, 11:02 Хочу сделать, чтобы в приложении можно было переключать стили. При этом надо чтобы один из пунктов был - Системный тиль. Чтобы при его выборе переключался на стиль, который у приложения создается при запуске. Как такое реализовать?
пытался сделать так Цитировать QStyle* defaultStyle=QApplication::style(); но при установке нового стиля он старый удаляет и приложение выдает ошибку на этапе выполнения. что посоветуете?QApplication::setStyle(new QCleanlooksStyle); QApplication::setStyle(defaultStyle); Название: Re: Как переключиться на стандартный Стиль Отправлено: Alex03 от Июль 18, 2008, 11:19 А ${QTDIR}\4.3.3\examples\widgets\styles\ посмотреть?
Код: void WidgetGallery::changeStyle(const QString &styleName) Название: Re: Как переключиться на стандартный Стиль Отправлено: Alex03 от Июль 18, 2008, 11:31 Или именно надо узнать какой стиль при запуске был?
Название: Re: Как переключиться на стандартный Стиль Отправлено: Hort от Июль 18, 2008, 12:41 Или именно надо узнать какой стиль при запуске был? да именно так. например при запуске из-под Висты, вистовский стиль, из под Linux - стандартный линуксовский стиль, установленный в системе. Надо его кудато както скопировать, а потом чтоб можно было его применять.Название: Re: Как переключиться на стандартный Стиль Отправлено: Alex03 от Июль 18, 2008, 14:17 Хм... чёта не нашел...
Какойнить бы метод типа QStyle::name() бы... Там кстати ещё в командной строке -style возможно. Если поглядеть исходники то там такая эвристика: Код: #if defined(Q_WS_X11) Название: Re: Как переключиться на стандартный Стиль Отправлено: Red Devil от Июль 19, 2008, 21:37 А ты копируй обьект, а не указатель.
Код: QStyle SystemStyle( *(QApplication::style()) ); Название: Re: Как переключиться на стандартный Стиль Отправлено: Hort от Июль 19, 2008, 23:35 А ты копируй обьект, а не указатель. нет паблик конструктора-копировщикаКод: QStyle SystemStyle( *(QApplication::style()) ); Цитировать error: `QStyle::QStyle(const QStyle&)' is private Alex03спасибо! это хорошо, но врятли получится такое повторить стандартными средставми Название: Re: Как переключиться на стандартный Стиль Отправлено: ритт от Июль 20, 2008, 02:20 Код: QString defaultStyle = QApplication::style()->objectName(); правда, здесь оговорочка: имя класса стиля может не совпадать с именем-ключом стиля на фабрике (я с таким сталкивался). поэтому, желательно всё же предварительно ещё с фабрикой пообщаться. Название: Re: Как переключиться на стандартный Стиль Отправлено: Hort от Июль 20, 2008, 08:47 Код: QString defaultStyle = QApplication::style()->objectName(); можно еще один вопрос по стилям? у меня WinXP и в нем установленна другая тема, отличная от темы по умолчанию. так интерфейс отображается нормально, но окна в QWorkspace не прорисовываются и виден только нижний край окна. если переключить на стандартный стиль в винде или если переключить на встроенный в Qt стиль - все ок. может кто-нибуть знает как от этого можно избавится? |