суббота, 29 декабря 2012 г.

Подключаем интерфейс в стиле Microsoft Ribbon


Впервые Microsoft анонсировала интерфейс Ribbon (что переводится как "лента") в 2007 году в новом выпуске MS Office. Новый интерфейс разительно отличался от привычных меню и тулбаров и не всем пришелся по вкусу.

У многих пользователей были трудности при переобучении, но с тех пор прошло уже много лет и пользователи как-то попривыкли к ленточному интерфейсу. Microsoft продолжает использовать риббоны в своих продуктах, в Windows 7, например, почти все стандартные приложения (MS Paint, WordPad) имеют интерфейс Ribbon.

Поэтому, чтобы быть в тренде, нужно использовать такой интерфейс в своих приложениях под Windows. Это сразу возвышает ваш программный продукт в глазах пользователей, т.к. сразу видно, что вы движетесь вперед, а не топчетесь на одном месте.

Для программистов на Qt/C++ существует готовое решение, которое называется Qtitan Ribbon devmachines.ru.
Сегодня мы будем подключать Qtitan Ribbon к нашему тестовому приложению на Qt.


Первым делом скачиваем SDK Qtitan Ribbon.
Доступны варианты для использования в MS Visual Studio 2008, 2010, QtCreator.

Устанавливаем скачанный пакет. Например, в каталог d:\Qtitan.


Прописываем переменные среды. Добавляем переменную QTITANDIR, и в переменную PATH добавляем путь до бинарников.

Пакет Qtitan Ribbon поставляется с демо-примерами. Помимо примеров с риббонами, в каталоге demos можно найти примеры:
  1. Классический интерфейс с меню и тулбарами в стилизованном оформлении.
  2. Стилизованное всплывающее окно, которое всплывает над треем. Подобное окошко можно увидеть у антивирусов.
  3. Виджеты для боковых панелей, таких как окно свойств некого объекта. Всё это тоже имеет различное стилизованное оформление а-ля Office 2007.

В качестве примера, создадим текстовый редактор а-ля WordPad с интерфейсом Microsoft Ribbon.

Создадим простой файл проекта ribbon.pro.

Показать код

Далее создадим главное окно, класс MainWindow. Чтобы главное окно приобрело ленточный интерфейс оно должно быть унаследовано от класса Qtitan::RibbonMainWindow.

#include <QtitanRibbon.h>

class MainWindow : public Qtitan::RibbonMainWindow
{
 Q_OBJECT
public:
  MainWindow(QWidget* parent = 0);
  virtual ~MainWindow();
};

Чтобы запустить пример вам следует в свойствах проекта назначить рабочий каталог на папку bin и положить в bin файлы:
qtnribbon2.dll
QtCore4.dll
QtGui4.dll
QtScript4.dll
QtSql4.dll
QtXml4.dll

Впрочем, если у вас установлена Qt той же версии, что и библиотеки из дистрибутива Qtitan (у меня это 4.8.1), то вам не понадобятся библиотеки с префиксом Qt*.dll.
Если же вы будете использовать коммерческую лицензию на Qtitan Ribbon, то вы сможете собрать библиотеку qtnribbon2 из исходников с той версией Qt, которая вам необходима.

Чтобы подключить к приложению стиль Ribbon нужно установить объекту QApplication стиль "ribbonstyle".

  QApplication a(argc, argv);
  a.setStyle("ribbonstyle");

После этого можно создавать элементы интерфейса.
Для начала создадим ленту с кнопками. Добавим страницу, на странице создадим несколько групп с кнопками и элементами управления.

Ниже, в спойлере, приведен код, создающий этот интерфейс.

Показать код

Теперь добавим главную иконку приложения, по нажатию на которую будет открываться меню.


Код в спойлере.

Показать код

Напоследок создадим панель быстрого доступа к функциям основного меню.

Показать код

В качестве редактора можно использовать компонент QTextEdit, который мы устанавливаем в качестве центрального виджета.

setCentralWidget(new QTextEdit(this));

При желании, также можно добавить панель состояния в стиле Ribbon, и дополнительную панель справа.

А чтобы заменить стандартный заголовок окна на заголовок в стиле Ribbon достаточно активировать параметр
 ribbonBar()->setFrameThemeEnabled();

При этом заголовок окна будет выровнен по центру и расположен на одном уровне с панелью быстрого доступа.



Комментариев нет:

Отправить комментарий