Russian Qt Forum
Июнь 16, 2024, 04:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: QMacStyle  (Прочитано 15483 раз)
spectre71
Гость
« : Июнь 16, 2009, 11:49 »

Что за QMacStyle.
В Assistant упоминается, а класса такого нет!
===
QT 4.5.1 / Windows
Записан
spirit
Гость
« Ответ #1 : Июнь 16, 2009, 12:00 »

ну так он чисто под маком и пашет как ХР-ишный стиль чисто под виндой.
Записан
mugabe
Гость
« Ответ #2 : Июнь 16, 2009, 12:03 »

Что за QMacStyle.
В Assistant упоминается, а класса такого нет!
===
QT 4.5.1 / Windows


http://doc.trolltech.com/4.5/qmacstyle.html

В виндовом ассистенте его нет.
Записан
spectre71
Гость
« Ответ #3 : Июнь 16, 2009, 12:21 »

ну так он чисто под маком и пашет как ХР-ишный стиль чисто под виндой.

Не понимаю. Бред какой-то.
Я делаю что-бы приложение работало под разными платформами. Но пишу на Windows XP.
У меня есть меню для смены стилей. Если стиль недоступен(под текущей платформой), то в меню он не отображается, но в коде он  есть - содание и применение стиля на нажатие пункта меню.
Я работаю на XP, но QWindowsVistaStyle как класс - есть.

Как мне сделать правильно. И каких еще стилией нет в моем Assistant.
Записан
spirit
Гость
« Ответ #4 : Июнь 16, 2009, 12:23 »

маковский стиль так же как и ХР-шный стиль используют специфическое АПИ,
которое не доступно под другими платформами,
например, под линуксом нельзя заюзать ни маковский стиль ни ХР-шный.
Записан
spectre71
Гость
« Ответ #5 : Июнь 16, 2009, 12:36 »

маковский стиль так же как и ХР-шный стиль используют специфическое АПИ,
которое не доступно под другими платформами,
например, под линуксом нельзя заюзать ни маковский стиль ни ХР-шный.

Это и так понятно! Хотя и бред - в том смысле, что все классы стилей должны быть доступны везде.
Просто если данного стиля нет(использует специфическое АПИ), он подменяется на некоторый default.
Так сделано с QWindowsVistaStyle, он тоже использует специфическое АПИ.
Я работаю под XP, и если выставлю QWindowsVistaStyle, то получу QWindowsStyle (хотя правильнее было бы получить QWindowsXPStyle)

Так, как мне правильно сделать, чтобы под разными системами у меня в меню были все возможные доступные стили для текущей системы
« Последнее редактирование: Июнь 16, 2009, 12:39 от spectre71 » Записан
spirit
Гость
« Ответ #6 : Июнь 16, 2009, 13:40 »

QWindowsVistaStyle тоже виндовый, поэтому на других платформах его не будет.
Записан
spirit
Гость
« Ответ #7 : Июнь 16, 2009, 13:44 »

пользуй QStyleFactory::keys для получения стилей.
Записан
spectre71
Гость
« Ответ #8 : Июнь 16, 2009, 16:00 »

пользуй QStyleFactory::keys для получения стилей.

Спасибо, то что надо!
Записан
spectre71
Гость
« Ответ #9 : Июнь 16, 2009, 19:20 »

QStyleFactory - Как всегда не доделано!

Короче не решаются задачи:
1) Определение имени(ключа) от стиля.
2) создание стилей
  new QCDEStyle(true);
  new QMotifStyle(true);

Записан
ритт
Гость
« Ответ #10 : Июнь 16, 2009, 19:35 »

1) при чём тут QStyleFactory?
2) что за хня?
Записан
spectre71
Гость
« Ответ #11 : Июнь 16, 2009, 21:16 »

1) при чём тут QStyleFactory?
2) что за хня?
Прочитай сначала
Записан
Rcus
Гость
« Ответ #12 : Июнь 16, 2009, 21:20 »

Ну что можно сказать... с ключами конечно засада, а вторую проблему я что-то не понял, апкасты уже отменили?
Записан
spectre71
Гость
« Ответ #13 : Июнь 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.

А что такое апкасты я не понял.
Записан
spectre71
Гость
« Ответ #14 : Июнь 16, 2009, 21:59 »

Короче пока делаю так:

Код
C++ (Qt)
 if     (false) {}
#ifdef Q_OS_MAC
#ifndef QT_NO_STYLE_MAC
 else if(qobject_cast<QMacStyle*>         (Style)) {.....}
#endif  
#endif  
#ifdef Q_OS_WIN
 else if(qobject_cast<QWindowsVistaStyle*>(Style)
         && QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA
         && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) {.....}
 else if(qobject_cast<QWindowsXPStyle*>   (Style)
         && QSysInfo::WindowsVersion >= QSysInfo::WV_XP
         && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) {.....}
#endif  
 else if(qobject_cast<QPlastiqueStyle*>   (Style)) {.....}
#ifndef QT_NO_STYLE_GTK
 else if(qobject_cast<QGtkStyle*>         (Style)) {.....}
#endif  
 else if(qobject_cast<QCleanlooksStyle*>  (Style)) {.....}
 else if(qobject_cast<QWindowsStyle*>     (Style)) {.....}
 else if(qobject_cast<QCDEStyle*>         (Style)) {.....}
 else if(qobject_cast<QMotifStyle*>       (Style)) {.....}
 

{.....} - означает делаем чего-то
Style - некоторый стиль, например текущий.

Немного нарыл в qstylefactory.cpp.
Но там очередной бред:
Код
C++ (Qt)
QStyle *QStyleFactory::create(const QString& key)
{
   QStyle *ret = 0;
...
...
#ifndef QT_NO_STYLE_MAC
   if (style.left(9) == QLatin1String("macintosh")) {
       ret = new QMacStyle;
#  ifdef Q_WS_MAC
       if (style == QLatin1String("macintosh"))
           style += QLatin1String(" (aqua)");
#  endif
   } else
#endif
...
...
   return ret;
}
 

Думал просто так воспользуюсь:

#ifndef QT_NO_STYLE_MAC
#endif

Ага, разбежался. Двойное отрицание, кому это пришло в голову.
QT_NO_STYLE_MAC не определен  не потому что есть QMacStyle, а потому что класс QMacStyle не включен в виндовые исходники.




« Последнее редактирование: Июнь 16, 2009, 22:01 от spectre71 » Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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