Название: Единый интерфейс программы на разных платформах Отправлено: warlock от Января 17, 2010, 14:15 Как реализовать одинаковое отображение программы на разных платформах? Например софт для KDE имеет всегда специфический интерфейс, запускаешь ли ты его под сам же KDE, так и под GNOME.
Знаю что при запуске программы в консоли можно указать внешнее оформление, но как сделать запуск программы всегда с конкретным оформелением? В чем преимущества и недостатки? Название: Re: Единый интерфейс программы на разных платформах Отправлено: BRE от Января 17, 2010, 14:23 Посмотри на:
класс QStyle и его производные; void QApplication::setStyle ( QStyle * style ) [static] Название: Re: Единый интерфейс программы на разных платформах Отправлено: Marat(Qt) от Января 17, 2010, 15:18 Преимущество в том, что программа везде будет одинаково выглядеть, недостаток в том, что программа везде будет смотреться как не родная.
Название: Re: Единый интерфейс программы на разных платформах Отправлено: warlock от Января 17, 2010, 16:40 Спасибо большое. :)
Сделал так: app.setStyle(new QCleanlooksStyle); где app - естественно объект класса QApplication. При запуске программы поменялись внутренние компоненты (кнопки, чекбосы и т.д.), но внешние элементы (заголовок окна, кнопки закрытия, сворачивания, разворачивания), остались прежними. Даже при запуске с командной строки с параментром -style тот же эффект. Я делаю вывод что это не на программном уровне проблема, так или я ошибаюсь? И еще, не подскажите есть ли в документации список возможных стилей оформеления? А то я лазив по списку классов нашел QMotifStyle,QWindowsStyle,QMacStyle(не заработал),QCleanlooksStyle ну и т.д. Есть ли просто список стилей? О, и да, какое название стиля, что используеться в KDE 4.5? Название: Re: Единый интерфейс программы на разных пла& Отправлено: Marat(Qt) от Января 17, 2010, 16:57 Во-первых, KDE 4.5 пока еще нету. Скоро выйдет 4.4. Стили КДЕ, МАК, ВинXP и висты не являются кроссплатформенными. Кроме них есть стили QMotifStyle, QWindowsStyle, QCDEStyle, QCleanlooksStyle, QPlastiqueStyle - кроссплатформенные.
Декорации окон(заголовок и проч.) стилями не контролируются, но можно создать свои. С этим сложнее. У Макса Шлее есть кое-что интересное, в книге по Qt4.5 страница 352 "Создание нестандартного окна виджета" (Глава 19 Растровые изображения). Не совсем по теме, но близко. Название: Re: Единый интерфейс программы на разных платформах Отправлено: warlock от Января 17, 2010, 17:50 Сори, перепутал верисию KDE с Qt, читал доки по нем.
Для использования кроссплатформенных стилей нужно, как я понимаю, ставить их библиотеки? Сейчас использую GNOME, как проверить как будет выглядеть окно в KDE, дело в том , что не раз у меня так выходило, что совсем чуть-чуть, но выглядело не так как задумано. Ну или вообще, как писать для KDE? Про пользовательские декорации видел, если кто будет читать эту тему будет интересно, то вот - Simple Decoration Example (http://doc.trolltech.com/4.6/qws-simpledecoration.html). По поводу "Создание нестандартного окна виджета" посмотрел, классная штука, это получаеться можно использовать маски для внешнего вида окна? Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки? Только наверно тогда нельзя будет изменять размер окна, но не всегда это необходимо :) Название: Re: Единый интерфейс программы на разных платформах Отправлено: Marat(Qt) от Января 17, 2010, 18:09 Для использования кросс-стилей, мною перечисленных, надо просто их задать, как вы это делали. Стили везде будут одинаковы, хотя мелкие отличия будут(как правило это связано со шрифтами, я например постоянно кросскомпилирую свои программы и запускаю их под вайном, чтобы было удобно и под линуксом и в вайне запускаю в одном стиле, как правило cleanlooks, все очень похоже, но вот шрифты подводят).
Думаю на счет вашего писания для КДЕ чуть сложнее. Как вариант у одного знакомого видел тему для гнома - один в один похожую на кде4. Можно весь гном на него пересадить. С другой стороны можете сделать свой стиль при помощи css (в Qt это qss, по сути тот же синтаксис). Каким вы его сделаете - ваше дело, но можете попробовать сделать что-то очень похожее на kde. Цитировать Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки? ДаЦитировать Только наверно тогда нельзя будет изменять размер окна Там было описано как, обрабатывая события мыши - двигать окно, по тому же принципу можно реализовать изменение его размера. |