воскресенье, 19 февраля 2012 г.

PicView - изучаем Qt

Прежде чем совмещать Qt и OpenGL, я решил изучить, хотя бы.. понемногу, того и того в отдельности. На ogl я делал "тестовую графику" для проекта по физике. На Qt  я решил сделать...да то, что получится. Очень важным элементом для меня была подгрузка картинок и их отображение, а так же понять как вообще работает Qt и так же было интересно пользоваться дизайнером окон Qt Creator.
Первое, что я сделал в новом проекте - это создал кнопку и сделал так, что при нажатии на неё, она скрывается. Абсолютно бессмысленная вещь. Однако принцип работы: как для элементов, созданных в дизайнере делать события я понял(правой кнопкой мыши на элемент и "Добавить слот"). Дальше я принялся загружать картинки(они отображались в виджитах типа label). Полез в гугл.нарыл кучу разных способов, но работал только один:
QString f;
...
QImage im;
im.load(f);
l->setPixmap(QPixmap::fromImage(im));
Где l - это указатель на наш label. образ метода был взят отсюда, спасибо автору статьи. В общем, это статья и определила тип приложения, которое я собирался сделать. А именно - небольшой просмоторщик картинок. Естественно. особый интерес представляла  загрузка файлов из папки проекта(ресурсные файлы, итд). Долго у меня не получилось, поэтом оказалась, что всё дело в странности реализации режима debug в Qt Creator,а именно: он создаёт папку, например: пусть в папке "MP" находится ваш проект с именем "Pj", при сборке debug, QtC создаёт папку, например "Pj-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2008__Qt_SDK_________" и в этой папке есть папка "debug", где находится файл Pj.exe(например). Я кидал ресурсы в папки MP/Pj и MP/.../debug. А при запуске в этом режиме QtC считает корневой папку MP/Pj-build-...
в неё и надо скидывать ресурсы. При это в release, он считай корневой ту папку, в которой находится исполняемый файл.
После того, как я понял этот странный факт, всё пошло быстро. к приложению была добавлена иконка(найденная, на просторах интернета, а точнее - на этом сайте).

Некоторые элементы интерфейса, были созданы программно, а именно опция "Открыть" в меню "Файл" и элемент label в статус-баре. С созданной опцией так же программно было связанно событие открытия файла.
Приложение работает следующим образом: с помощью опции "Открыть", в меню "Файл", выбираете картинку, а затем нажимаете "Set Image".
Вот то, что получилось, исходники прилагаются. Приложение требует библиотек QtGui4.dll и QtCore4.dll. Из-за того, что они немного увесисты(10 Мб вместе), прикладывать их не стал.

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

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