Russian Qt Forum
Мая 21, 2025, 11:15
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Единый интерфейс программы на разных платформах
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Единый интерфейс программы на разных платформах (Прочитано 4986 раз)
warlock
Гость
Единый интерфейс программы на разных платформах
«
:
Января 17, 2010, 14:15 »
Как реализовать одинаковое отображение программы на разных платформах? Например софт для KDE имеет всегда специфический интерфейс, запускаешь ли ты его под сам же KDE, так и под GNOME.
Знаю что при запуске программы в консоли можно указать внешнее оформление, но как сделать запуск программы всегда с конкретным оформелением?
В чем преимущества и недостатки?
Записан
BRE
Гость
Re: Единый интерфейс программы на разных платформах
«
Ответ #1 :
Января 17, 2010, 14:23 »
Посмотри на:
класс QStyle и его производные;
void QApplication::setStyle ( QStyle * style ) [static]
Записан
Marat(Qt)
Гость
Re: Единый интерфейс программы на разных платформах
«
Ответ #2 :
Января 17, 2010, 15:18 »
Преимущество в том, что программа везде будет одинаково выглядеть, недостаток в том, что программа везде будет смотреться как не родная.
Записан
warlock
Гость
Re: Единый интерфейс программы на разных платформах
«
Ответ #3 :
Января 17, 2010, 16:40 »
Спасибо большое.
Сделал так:
app.setStyle(new QCleanlooksStyle);
где app - естественно объект класса QApplication.
При запуске программы поменялись внутренние компоненты (кнопки, чекбосы и т.д.), но внешние элементы (заголовок окна, кнопки закрытия, сворачивания, разворачивания), остались прежними. Даже при запуске с командной строки с параментром -style тот же эффект. Я делаю вывод что это не на программном уровне проблема, так или я ошибаюсь?
И еще, не подскажите есть ли в документации список возможных стилей оформеления? А то я лазив по списку классов нашел QMotifStyle,QWindowsStyle,QMacStyle(не заработал),QCleanlooksStyle ну и т.д. Есть ли просто список стилей? О, и да, какое название стиля, что используеться в KDE 4.5?
Записан
Marat(Qt)
Гость
Re: Единый интерфейс программы на разных пла&
«
Ответ #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
Гость
Re: Единый интерфейс программы на разных платформах
«
Ответ #5 :
Января 17, 2010, 17:50 »
Сори, перепутал верисию KDE с Qt, читал доки по нем.
Для использования кроссплатформенных стилей нужно, как я понимаю, ставить их библиотеки?
Сейчас использую GNOME, как проверить как будет выглядеть окно в KDE, дело в том , что не раз у меня так выходило, что совсем чуть-чуть, но выглядело не так как задумано. Ну или вообще, как писать для KDE?
Про пользовательские декорации видел, если кто будет читать эту тему будет интересно, то вот -
Simple Decoration Example
.
По поводу "Создание нестандартного окна виджета" посмотрел, классная штука, это получаеться можно использовать маски для внешнего вида окна? Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки? Только наверно тогда нельзя будет изменять размер окна, но не всегда это необходимо
Записан
Marat(Qt)
Гость
Re: Единый интерфейс программы на разных платформах
«
Ответ #6 :
Января 17, 2010, 18:09 »
Для использования кросс-стилей, мною перечисленных, надо просто их задать, как вы это делали. Стили везде будут одинаковы, хотя мелкие отличия будут(как правило это связано со шрифтами, я например постоянно кросскомпилирую свои программы и запускаю их под вайном, чтобы было удобно и под линуксом и в вайне запускаю в одном стиле, как правило cleanlooks, все очень похоже, но вот шрифты подводят).
Думаю на счет вашего писания для КДЕ чуть сложнее. Как вариант у одного знакомого видел тему для гнома - один в один похожую на кде4. Можно весь гном на него пересадить. С другой стороны можете сделать свой стиль при помощи css (в Qt это qss, по сути тот же синтаксис). Каким вы его сделаете - ваше дело, но можете попробовать сделать что-то очень похожее на kde.
Цитировать
Т.е. это я могу нарисовать в GIMP'е например фон, а на нем разместить мои виджеты, элементы управления, кнопки?
Да
Цитировать
Только наверно тогда нельзя будет изменять размер окна
Там было описано как, обрабатывая события мыши - двигать окно, по тому же принципу можно реализовать изменение его размера.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...