Russian Qt Forum
Мая 21, 2025, 06:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Единый интерфейс программы на разных платформах  (Прочитано 4985 раз)
warlock
Гость
« : Января 17, 2010, 14:15 »

Как реализовать одинаковое отображение программы на разных платформах? Например софт для KDE имеет всегда специфический интерфейс, запускаешь ли ты его под сам же KDE, так и под  GNOME.
Знаю что при запуске программы в консоли можно указать внешнее оформление, но как сделать запуск программы всегда с конкретным оформелением?
В чем преимущества и недостатки?
Записан
BRE
Гость
« Ответ #1 : Января 17, 2010, 14:23 »

Посмотри на:
класс QStyle и его производные;
void QApplication::setStyle ( QStyle * style )   [static]
Записан
Marat(Qt)
Гость
« Ответ #2 : Января 17, 2010, 15:18 »

Преимущество в том, что программа везде будет одинаково выглядеть, недостаток в том, что программа везде будет смотреться как не родная.
Записан
warlock
Гость
« Ответ #3 : Января 17, 2010, 16:40 »

Спасибо большое.  Улыбающийся
Сделал так:
app.setStyle(new QCleanlooksStyle);
где app - естественно объект класса QApplication.
При запуске программы поменялись внутренние компоненты (кнопки, чекбосы и т.д.), но внешние элементы (заголовок окна, кнопки закрытия, сворачивания, разворачивания), остались прежними. Даже при запуске с командной строки с параментром -style тот же эффект. Я делаю вывод что это не на программном уровне проблема, так или я ошибаюсь?

И еще, не подскажите есть ли в документации список возможных стилей оформеления? А то я лазив по списку классов нашел QMotifStyle,QWindowsStyle,QMacStyle(не заработал),QCleanlooksStyle ну и т.д. Есть ли просто список стилей? О, и да, какое название стиля, что используеться в KDE 4.5?
Записан
Marat(Qt)
Гость
« Ответ #4 : Января 17, 2010, 16:57 »

Во-первых, KDE 4.5 пока еще нету. Скоро выйдет 4.4. Стили КДЕ, МАК, ВинXP и висты не являются кроссплатформенными. Кроме них есть стили QMotifStyle, QWindowsStyle, QCDEStyle, QCleanlooksStyle, QPlastiqueStyle - кроссплатформенные.
Декорации окон(заголовок и проч.) стилями не контролируются, но можно создать свои. С этим сложнее.

У Макса Шлее есть кое-что интересное, в книге по Qt4.5 страница 352 "Создание нестандартного окна виджета" (Глава 19 Растровые изображения). Не совсем по теме, но близко.
« Последнее редактирование: Января 17, 2010, 17:08 от Marat(Qt) » Записан
warlock
Гость
« Ответ #5 : Января 17, 2010, 17:50 »

Сори, перепутал верисию KDE с Qt, читал доки по нем.
Для использования кроссплатформенных стилей нужно, как я понимаю, ставить их библиотеки?
Сейчас использую GNOME, как проверить как будет выглядеть окно в KDE, дело в том , что не раз у меня так выходило, что совсем чуть-чуть, но выглядело не так как задумано. Ну или вообще, как писать для KDE?

Про пользовательские декорации видел, если кто будет читать эту тему будет интересно, то вот - Simple Decoration Example.
По поводу "Создание нестандартного окна виджета" посмотрел, классная штука, это получаеться можно использовать маски для внешнего вида окна? Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки? Только наверно тогда нельзя будет изменять размер окна, но не всегда это необходимо  Улыбающийся
Записан
Marat(Qt)
Гость
« Ответ #6 : Января 17, 2010, 18:09 »

Для использования кросс-стилей, мною перечисленных, надо просто их задать, как вы это делали. Стили везде будут одинаковы, хотя мелкие отличия будут(как правило это связано со шрифтами, я например постоянно кросскомпилирую свои программы и запускаю их под вайном, чтобы было удобно и под линуксом и в вайне запускаю в одном стиле, как правило cleanlooks, все очень похоже, но вот шрифты подводят).

Думаю на счет вашего писания для КДЕ чуть сложнее. Как вариант у одного знакомого видел тему для гнома - один в один похожую на кде4. Можно весь гном на него пересадить. С другой стороны можете сделать свой стиль при помощи css (в Qt это qss, по сути тот же синтаксис). Каким вы его сделаете - ваше дело, но можете попробовать сделать что-то очень похожее на kde.
Цитировать
Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки?
Да
Цитировать
Только наверно тогда нельзя будет изменять размер окна
Там было описано как, обрабатывая события мыши - двигать окно, по тому же принципу можно реализовать изменение его размера.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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