QT 4: программирование GUI на С++ | страница 43



> …

> images/gotocell.png

>

>

Файлы ресурсов после компиляции входят в состав исполняемого модуля приложения, поэтому они не могут теряться. При ссылке на ресурсы мы используемпрефикс пути :/ (двоеточие и слеш), и именно поэтому пиктограмма задается как :/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: