QT 4: программирование GUI на С++
Шрифт:
Для
Кроме этих закрытых слотов и закрытых функций в подклассе MainWindow имеется также много закрытых переменных. По мере их использования мы будем объяснять их назначение.
Теперь мы кратко рассмотрим реализацию этого подкласса:
Мы включаем заголовочный файл <QtGui>, который содержит определения всех классов Qt, используемых нашим подклассом. Мы также включаем некоторые пользовательские заголовочные файлы из главы 2 , а именно finddialog.h, gotocelldialog.h и sortdialog.h.
В конструкторе мы начинаем создание виджета Электронная таблица Spreadsheet
Рис. 3.2. Области главного окна QMainWindow.
Мы вызываем закрытые функции createActions, createMenus, createContextMenu, createToolBars и createStatusBar для построения остальной части главного окна. Мы также вызываем закрытую функцию readSettings для чтения настроек, сохраненных в приложении.
Мы инициализируем указатель findDialog в нулевое значение, а при первом вызове MainWindow::find мы создадим объект FindDialog. B конце конструктора в качестве пиктограммы окна мы задаем PNG—файл: icon.png. Qt поддерживает многие форматы графических файлов, включая BMP, GIF [4] , JPEG, PNG, PNM, XBM и XPM. Функция QWidget::setWindowIcon устанавливает пиктограмму в левый верхний угол окна. К сожалению, не существует независимого от платформы способа установки пиктограммы приложения, отображаемого на рабочем столе компьютера. Описание этой процедуры для различных платформ можно найти в сети Интернет по адресу http://doc.trolltech.com/4.1/appicon.html.
4
Если вы находитесь в стране, которая признает патенты на программное обеспечение и где компания Unisys обладает патентом на LZW—распаковку, вам, возможно, потребуется лицензия от компании Unisys на право применения ее технологии работы с файлами GIF. По этой причине поддержка файлов GIF по умолчанию отключена в Qt. Мы надеемся, что срок действия ограничений этой лицензии истечет к концу 2004 года. GIF support is disabled in Qt by default because the decompression algorithm used by GIF files was patented in some countries where software patents are recognized. We believe that this patent has now expired worldwide. To enable GIF support in Qt, pass the —qt—gif command—line option to the configure script or set the appropriate option in the Qt installer.
В приложениях с графическим пользовательским интерфейсом обычно используется много изображений. Существует много различных методов, предназначенных для работы приложения с изображениями. Наиболее распространенными являются:
• хранение изображений в файлах и загрузка их во время выполнения приложения;
• включение файлов XPM в исходный код программы; это возможно, поскольку файлы XPM являются совместимыми с файлами исходного кода С++);
• использование механизма определения ресурсов, предусмотренного в Qt.
Мы используем здесь механизм определения ресурсов, поскольку он более удобен, чем загрузка файлов во время выполнения приложения, и он работает со всеми поддерживаемыми форматами графических файлов. Мы храним изображения в подкаталоге images исходного дерева.
Для применения системы ресурсов Qt мы должны создать файл ресурсов и добавить в файл .pro строку, которая задает этот файл ресурсов. В нашем примере мы назвали файл ресурсов spreadsheet.qrc, поэтому в файл .pro мы добавляем следующую строку: