Хотелось ли Вам иметь быстрый и красивый, а главное удобный просмотрщик графики? А, как известно: хочешь, чтобы программа была хорошей – напиши ее своими руками.
Всем надоел стандартный просмотрщик Windows! Вместо него мы сделаем прекрасный и ультрасовременный Viewer – QViewer!
Дальнейшая последовательность действий почти аналогична той, что мы проделывали при создании видеоплеера. Посему приведу сокращенный вариант.
1. Запустите Qt Creator. Снова воспользуемся мастером.
Выберите Файл - Новый файл или проект…, а там Приложение Qt Widgets.
Рис. 7.0. Создание проекта Qt-приложения с помощью мастера
Дадим ему имя QViwer, укажем месторасположение проекта и нажмем Далее (3 раза) и Завершить.
2. Займемся созданием и редактированием действий.
2.1. Создайте стандартное меню Файл с пунктами Открыть, Выход.
Между Открыть и Выход добавьте разделитель.
Дадим им имена action_Open и action_Quit соответственно, а также добавим к ним горячие комбинации клавиш: Ctrl+O, Ctrl+Q. Для action_Quit см. рис. 6.1 (да-да, это ссылка на 6 лабораторную работу, но вы можете не листать странички, если помните, что делать).
Теперь приступим к action_Open, зададим иконку (предварительно создав и подключив файл ресурсов), бросим на панель инструментов, нажмем правой копкой мыши на action_Open в редакторе действий и выберем: Перейти к слоту…, далее см. рис. 6.2, жмакаем ОК.
Во-первых, обратите внимание на last_open_dir в первой строчке, там пропишите сразу пути к каталогу, где хранятся рисунки, чтобы каждый раз при тестировании не лазить по каталогам в поисках фотографий.
Напомню также о необходимости испольхования двойного слэша при написании адреса, например: "D:\\Photo_2\\Fall\\"
Если же в названии будут присутствовать русские символы – см. л.р. №5.
Во-вторых, следует подключить (в заголовочном файле):
#include <QImage>
#include <QtGui>
#include <QFileDialog>
а также описать переменную (и давайте сразу еще одну):
//resize(1600, 1066); //если захотите менять размеры
и давайте сразу загрузим туда картинку, так сказать по умолчанию: для этого выберем подходящий рисунок, бросим его в папку с исполняемым файлом и загрузим.
2.3. Приложение должно быть красивым: измените заголовок окна на «Самый лучший просмотрщик картинок созданный САПРовцем» (либо на любой другой по вашему усмотрению) и добавте иконку к окошку (предварительно подключив ее в файле ресурсов).
2.4. Создайте меню Просмотр, а в нем пункты: Истинный размер, По размеру окна, На весь экран, Предыдущий, Следующий. Придайте им соответствующие иконки, переименуйте действия в action_Real, action_Stretch, action_Full, action_Back и action_Forward соответственно, а также задайте им горячие клавиши: Ctrl+A, Ctrl+B, Ctrl+F, ,®.
Разместите их в панели инструментов.
2.5. Работа с панелью инструментов:
переместите панель инструментов вниз – так будет удобнее;
выберите в Инспекторе объектовПанель инструментов либо просто щелкните по ней на форме, в Окне свойств найдите iconSize и установите значения 96 и 48 для ширины и высоты соответственно (либо другие значения – в зависимости от выбранного набора иконок).
3. Истинный размер – реализуйте самостоятельно.
4. По размеру окна – нажатие на эту кнопку растянет картинку до размеров окна нашего приложения и привяжет к границам окна, при этом возможны искажения картинки, повторное нажатие – отвязывает картинку.
if (scrollArea->widgetResizable())
{
scrollArea->setWidgetResizable(false);
menuBar()->show();
ui->mainToolBar->show();
}
else
{
scrollArea->setWidgetResizable(true);
menuBar()->hide();
// ui->mainToolBar->hide();
}
Также мы прячем одно из имеющихся в наличии меню, если же спрятать оба (и меню, и панель инструментов), то, по неведомой мне причине, горячие клавиши перестанут работать, и мы не сможем вернуться в предыдущее сострояние.
5. На весь экран:
if (this->isFullScreen())
{
if ( _maximized ) this->showMaximized();
else this->showNormal();
menuBar()->show();
}
else
{
_maximized = this->isMaximized();
this->showFullScreen();
menuBar()->hide();
}
Тут следуете описать одну переменную, но Вы, я думаю, догадываетесь где и как… ;-)
Это интересно:действия По размеру окна и На весь экран очень занятно комбинируются – проверьте.
6. Туда и обратно.
Попробуем научиться перемещатся по каталогам с картинками – для этого напишем обработчики соответствующих событий и еще одну