В приложениях с графическим пользовательским интерфейсом обычно используется много изображений. Существует много различных методов, предназначенных для работы приложения с изображениями. Наиболее распространенными являются:
• хранение изображений в файлах и загрузка их во время выполнения приложения;
• включение файлов 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» + «подчеркнутый символ». —