Выбрать главу

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

• хранение изображений в файлах и загрузка их во время выполнения приложения;

• включение файлов XPM в исходный код программы; это возможно, поскольку файлы XPM являются совместимыми с файлами исходного кода С++);

• использование механизма определения ресурсов, предусмотренного в Qt.

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

Для применения системы ресурсов Qt мы должны создать файл ресурсов и добавить в файл .pro строку, которая задает этот файл ресурсов. В нашем примере мы назвали файл ресурсов spreadsheet.qrc, поэтому в файл .pro мы добавляем следующую строку:

RESOURCES = spreadsheet.qrc

Сам файл ресурсов имеет простой XML—формат. Ниже показан фрагмент из используемого нами файла ресурсов:

<!DOCTYPE RCC><RCC version="1.0">

<qresource>

<file>images/icon.png</file>

<file>images/gotocell.png</file>

</qresource>

</RCC>

Файлы ресурсов после компиляции входят в состав исполняемого модуля приложения, поэтому они не могут теряться. При ссылке на ресурсы мы используемпрефикс пути :/ (двоеточие и слеш), и именно поэтому пиктограмма задается как :/images/icon.png. Ресурсами могут быть любые файлы (не только изображения), и мы можем их использовать в большинстве случаев, когда в Qt ожидается применение имени файла. Они более подробно рассматриваются в гл. 12.

Создание меню и панелей инструментов

Большинство современных приложений с графическим пользовательским интерфейсом содержат меню, контекстное меню и панели инструментов. Меню позволяют пользователям исследовать возможности приложения и узнать новые способы работы, а контекстные меню и панели инструментов обеспечивают быстрый доступ к часто используемым функциям.

Рис. 3.3. Меню приложения Электронная таблица.

Использование понятия «действия» упрощает программирование меню и панелей инструментов при помощи средств разработки Qt. Элемент action (действие) можно добавлять к любому количеству меню и панелей инструментов. Создание в Qt меню и панелей инструментов разбивается на следующие этапы:

• создание и настройка действий;

• создание меню и добавление к ним действий;

• создание панелей инструментов и добавление к ним действий.

В приложении Электронная таблица действия создаются в createActions():

01 void MainWindow::createActions()

02 {

03 newAction = new QAction(tr("&New"), this);

04 newAction->setIcon(QIcon(":/images/new.png"));

05 newAction->setShortcut(tr("Ctrl+N"));

06 newAction->setStatusTip(tr("Create a new spreadsheet file"));

07 connect(newAction, SIGNAL(triggered()),

08 this, SLOT(newFile()));

Действие New (создать) имеет клавишу быстрого выбора пункта меню (New)[5], родительское окно (главное окно), пиктограмму (new.png), клавишу быстрого вызова команды (Ctrl+N) и сообщение в строке состояния. Мы подсоединяем к сигналу этого действия triggered() закрытый слот главного окна newFile(); этот слот мы реализуем в следующем разделе. Это соединение гарантирует, что при выборе пользователем пункта меню File | New (файл | создать), при нажатии им кнопки New на панели инструментов или при нажатии клавиш Ctrl+N будет вызван слот newFile().

Создание действий Open (открыть), Save (сохранить) и Save As (сохранить как) очень похоже на создание действия New, поэтому мы сразу переходим к строке «recently opened files» (недавно открытые файлы) меню File:

09 for (int i = 0; i < MaxRecentFiles; ++i)

10 {

11 recentFileActions[i] = new QAction(this);

12 recentFileActions[i]->setVisible(false);

13 connect(recentFileActions[i], SIGNAL(triggered()),

14 this, SLOT(openRecentFile()));

15 }

Мы заполняем действиями массив recentFileActions. Каждое действие скрыто и подключается к слоту openRecentFile(). Далее мы покажем, как действия в списке недавно используемых файлов сделать видимыми, чтобы можно было ими воспользоваться.

вернуться

5

Подчеркнутый символ в пункте меню означает, что этот пункт можно выбрать в активном меню, нажав клавиатурную комбинацию «Alt» + «подчеркнутый символ». — Примеч. науч. ред.