Жасмин Бланшет - QT 4: программирование GUI на С++
- Название:QT 4: программирование GUI на С++
- Автор:
- Жанр:
- Издательство:КУДИЦ-ПРЕСС
- Год:2007
- Город:Москва
- ISBN:978-5-91136-038-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Жасмин Бланшет - QT 4: программирование GUI на С++ краткое содержание
Единственное официальное руководстро по практическому программированию в среде Qt 4.1.
Применяя средства разработки Qt компании «Trolltech», вы сможете создавать на С++ промышленные приложения, которые естественно работают в средах Windows, Linux/UNIX, Linux для встроенных систем без изменения программного кода и Mac Os X. Книга написана сотрудниками компании «Trolltech». Она представляет собой практическое руководство по успешному применению самой мощной из всех созданных до сих пор версий Qt — Qt 4.1.
Из книги «Qt 4: программирование GUI на С++» вы узнаете о наиболее эффективных приемах и методах программирования с применением Qt 4 и овладеете ключевыми технологиями в самых различных областях — от архитектуры Qt модель/представление до мощного графического процессора 2D. Авторы вооружают читателей беспрецедентно глубокими знаниями модели событий и системы компоновки Qt.
На реалистических примерах они описывают высокоэффективные методы во всех областях — от разработки основных элементов графического пользовательского интерфейса до передовых методов интеграции с базой данных и XML. Каждая глава содержит полностью обновленный материал.
Данное издание:
• Включает новые главы по архитектуре Qt 4 модель/представление и поддержке подключаемых модулей Qt, а также краткое введение в программирование встроенных систем на платформе Qtopia.
• Раскрывает все основные принципы программирования в среде Qt — от создания диалоговых и других окон до реализации функциональности приложений.
• Знакомит с передовыми методами управления компоновкой виджетов и обработкой событий.
• Показывает, как можно с наибольшей эффективностью использовать новые программные интерфейсы Qt 4, в частности мощный графический процессор 2D и новые простые в применении классы—контейнеры.
• Представляет передовые методы Qt 4, которых нет ни в одной книге: от создания подключаемых модулей, расширяющих возможности Qt, и приложений, до применения «родных» для конкретной платформы программных интерфейсов.
• Содержит приложение с подробным введением в программирование на С++ в среде Qt для опытных Java—разработчиков.
Жасмин Бланшет (Jasmine Blanchette) — менеджер по документированию и старший разработчик компании «Trolltech» с 2001 года. Он является редактором «Qt Quarterly», информационного бюллетеня компании «Trolltech», и соавтором книги «Qt 3: программирование GUI на С++».
Марк Саммерфилд (Mark Summerfield) — независимый преподаватель и консультант по С++, Qt и Python. Он работал менеджером по документированию в компании «Trolltech» на протяжении трех лет. Марк является соавтором книги «Qt 3: программирование GUI на С++».
QT 4: программирование GUI на С++ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Некоторые разработчики выбирают один из подходов и всегда следуют ему. При этом разработка диалоговых окон становится более привычным и простым делом, однако достоинства других подходов не будут использованы. В идеале решение по выбору конкретного подхода должно учитывать в каждом случае особенности конкретного диалогового окна.
Мы завершим данный раздел созданием диалогового окна About (справка о программе). Мы могли бы создать для представления данных о программе специальное диалоговое окно наподобие созданных нами ранее Find или Go-to-Cell, но поскольку диалоговые окна About сильно стилизованы, в средствах разработки Qt предусмотрено простое решение:
01 void MainWindow::about()
02 {
03 QMessageBox::about(this, tr("About Spreadsheet"),
04 tr("
Spreadsheet 1.1
"
05 "
Copyright © 2006 Software Inc."
06 "
Spreadsheet is a small application that "
07 "demonstrates QAction, QMainWindow, QMenuBar, "
08 "QStatusBar, QTableWidget, QToolBar, and many other "
09 "Qt classes."));
10 }

Рис. 3.15. Справка о приложении Электронная таблица.
Диалоговое окно About получается путем вызова удобной статической функции QMessageBox::about(). Эта функция очень напоминает функцию QMessageBox::warning(), однако здесь вместо стандартных «предупреждающих» пиктограмм используется пиктограмма родительского окна.
Таким образом, мы уже сумели воспользоваться несколькими удобными статическими функциями, определенными в классах QMessageBox и QFileDialog. Эти функции создают диалоговое окно, инициализируют его и вызывают для него функцию exec(). Кроме того, вполне возможно, хотя и менее удобно, создать виджет QMessageBox или QFileDialog так же, как это делается для любого другого виджета, и явно вызвать для него функцию exec() или даже show().
Сохранение настроек приложения
В конструкторе MainWindow мы уже вызывали функцию readSettings() для загрузки сохраненных приложением настроек. Аналогично в функции closeEvent() мы вызывали writeSettings() для сохранения настроек. Эти функции являются последними функциями—членами MainWindow, которые необходимо реализовать.
01 void MainWindow::writeSettings()
02 {
03 QSettings settings("Software Inc.", "Spreadsheet");
04 settings.setValue("geometry", geometry());
05 settings.setValue("recentFiles", recentFiles);
06 settings.setValue("showGrid", showGridAction->isChecked());
07 settings.setValue("autoRecalc", autoRecalcAction->isChecked());
08 }
Функция writeSettings() сохраняет «геометрию» окна (положение и размер), список последних открывавшихся файлов и опции Show Grid (показать сетку) и Auto—Recalculate (автоматический повтор вычислений).
По умолчанию QSettings сохраняет настройки приложения в месте, которое зависит от используемой платформы. В системе Windows для этого используется системный реестр; в системе Unix данные хранятся в текстовых файлах; в системе Mac OS X для этого используется прикладной интерфейс задания установок Core Foundation Preferences.
В аргументах конструктора задаются название организации и имя приложения. Эта информация используется затем (причем по-разному для различных платформ) для определения места расположения настроек.
QSettings хранит настройки в виде пары ключ—значение. Здесь ключ подобен пути файловой системы. Подключи можно задавать, используя синтаксис, подобный тому, который применяется при указании пути (например, findDialog/matchCase), или используя beginGroup() и endGroup():
settings.beginGroup("findDialog");
settings.setValue("matchCase", caseCheckBox->isChecked());
settings.setValue("searchBackward", backwardCheckBox->isChecked());
settings.endGroup();
Значение value может иметь типы int, bool, double, QString, QStringList или любой другой, поддерживаемый QVariant, включая зарегистрированные пользовательские типы.
01 void MainWindow::readSettings()
02 {
03 QSettings settings("Software Inc.", "Spreadsheet");
04 QRect rect = settings.value("geometry",
05 QRect(200, 200, 400, 400)).toRect();
06 move(rect.topLeft());
07 resize(rect.size());
08 recentFiles = settings.value("recentFiles").toStringList();
09 updateRecentFileActions();
10 bool showGrid = settings.value("showGrid", true).toBool();
11 showGridAction->setChecked(showGrid);
12 bool autoRecalc = settings.value("autoRecalc", true).toBool();
13 autoRecalcAction->setChecked(autoRecalc);
14 }
Функция readSettings() загружает настройки, которые были сохранены функцией writeSettings(). Второй аргумент функции value() определяет значение, принимаемое по умолчанию в случае отсутствия запрашиваемого параметра. Принимаемые по умолчанию значения будут использованы при первом запуске приложения. Поскольку второй аргумент не задан для списка недавно используемых файлов, этот список будет пустым при первом запуске приложения.
Qt содержит функцию QWidget::setGeometry(), которая дополняет функцию QWidget:: geometry(), однако они не всегда работают должным образом в системе X11 из-за ограничений многих оконных менеджеров. По этой причине мы используем вместо них функции move() и resize(). (Подробную информацию по тому вопросу можно найти по адресу http://doc.trolltech.com/4.1/geometry.html.)
Весь программный код MainWindow, относящийся к объектам QSettings, мы разместили в функциях readSettings() и writeSettings(); такой подход лишь один из возможных. Объект QSettings может создаваться для запроса или модификации каких-нибудь настроек в любой момент во время выполнения приложения и из любого места программы.
Теперь мы завершили построение главного окна MainWindow приложения Электронная таблица. В следующих разделах мы рассмотрим возможность модификации приложения Электронная таблица для обеспечения работы со многими документами и реализации экранных заставок. Мы завершим реализацию этих функций, в том числе обеспечивающих обработку формул и сортировку, в следующей главе.
Работа со многими документами
Теперь мы готовы написать функцию main() приложения Электронная таблица:
01 #include
02 #include "mainwindow.h"
03 int main(int argc, char *argv[])
04 {
05 QApplication app(argc, argv);
06 MainWindow mainWin;
07 mainWin.show();
08 return app.exec();
09 }
Данная функция main() немного отличается от написанных ранее: мы создали экземпляр MainWindow в виде переменной стека, а не использовали оператор new. Экземпляр MainWindow будет автоматически уничтожен после завершения функции.
При применении данной функции main() приложение Электронная таблица обеспечивает вывод на экран только одного главного окна и позволяет работать только с одним документом. Если мы хотим одновременно редактировать несколько документов, нам придется запускать несколько приложений Электронная таблица. Но это будет не так удобно, как если бы один экземпляр приложения обеспечивал вывод на экран многих главных окон, подобно тому как один экземпляр веб-браузера позволяет просматривать одновременно несколько окон.
Читать дальшеИнтервал:
Закладка: