Жасмин Бланшет - QT 4: программирование GUI на С++

Тут можно читать онлайн Жасмин Бланшет - QT 4: программирование GUI на С++ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство КУДИЦ-ПРЕСС, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    QT 4: программирование GUI на С++
  • Автор:
  • Жанр:
  • Издательство:
    КУДИЦ-ПРЕСС
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    978-5-91136-038-2
  • Рейтинг:
    3.75/5. Голосов: 121
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Жасмин Бланшет - QT 4: программирование GUI на С++ краткое содержание

QT 4: программирование GUI на С++ - описание и краткое содержание, автор Жасмин Бланшет, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Единственное официальное руководстро по практическому программированию в среде 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 на С++ - читать онлайн бесплатно полную версию (весь текст целиком)

QT 4: программирование GUI на С++ - читать книгу онлайн бесплатно, автор Жасмин Бланшет
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Мы модифицируем приложение Электронная таблица для обеспечения возможности работы со многими документами. Для начала нам потребуется немного видоизменить меню File:

• пункт меню File | New создает новое главное окно с пустым документом вместо повторного использования существующего главного окна;

• пункт меню File | Close закрывает текущее главное окно;

• пункт меню File | Exit закрывает все окна.

Рис 316 Новое меню File В первоначальной версии меню File не было пункта - фото 53

Рис. 3.16. Новое меню File.

В первоначальной версии меню File не было пункта Close (закрыть), поскольку он выполнял бы ту же функцию, что и пункт меню Exit. Новая функция main() примет следующий вид:

01 int main(int argc, char *argv[])

02 {

03 QApplication app(argc, argv);

04 MainWindow *mainWin = new MainWindow;

05 mainWin->show();

06 return app.exec();

07 }

При работе со многими окнами теперь имеет смысл создавать MainWindow оператором new, потому что затем мы можем использовать оператор delete для удаления главного окна после завершения работы с ним с целью экономии памяти.

Новый слот MainWindow::newFile() будет выглядеть следующим образом:

01 void MainWindow::newFile()

02 {

03 MainWindow *mainWin = new MainWindow;

04 mainWin->show();

05 }

Мы просто создаем новый экземпляр MainWindow. Может показаться странным, что мы нигде не сохраняем указатель на новое окно, но это не составит проблемы, поскольку Qt отслеживает все окна.

Действия Close и Exit будут задаваться следующим образом:

01 void MainWindow::createActions()

02 {

03 closeAction = new QAction(tr("&Close"), this);

04 closeAction->setShortcut(tr("Ctrl+W"));

05 closeAction->setStatusTip(tr("Close this window"));

06 connect(closeAction, SIGNAL(triggered()), this, SLOT(close()));

07 exitAction = new QAction(tr("E&xit"), this);

08 exitAction->setShortcut(tr("Ctrl+Q"));

09 exitAction->setStatusTip(tr("Exit the application"));

10 connect(exitAction, SIGNAL(triggered()),

11 qApp, SLOT(closeAllWindows()));

12 }

Слот closeAllWindows() объекта QApplication закрывает все окна приложения, если только никакое из них не отклоняет запрос (event) на его закрытие. Именно такой режим работы нам здесь нужен. Нам не надо беспокоиться о несохраненных изменениях, поскольку обработка этого события выполняется функцией MainWindow::closeEvent() при каждом закрытии окна.

Можно подумать, что на этом завершается построение приложения, работающего со многими документами. К сожалению, одна проблема оказалась незамеченной. Если пользователь будет постоянно создавать и закрывать главные окна, в конце концов может не хватить памяти компьютера. Это происходит из-за того, что мы создаем виджеты MainWindow в функции newFile(), но никогда не удаляем их. Когда пользователь закрывает главное окно, оно исчезает с экрана, но по-прежнему остается в памяти. При создании многих окон может возникнуть проблема.

Решение состоит в установке признака Qt::WA_DeleteOnClose в конструкторе:

01 MainWindow::MainWindow()

02 {

03 setAttribute(Qt::WA_DeleteOnClose);

04 }

Это указывает Qt на необходимость удаления окна при его закрытии. Кроме Qt::WA_DeleteOnClose в конструкторе QWidget можно устанавливать много других флажков, задавая необходимый режим работы виджета.

Утечка памяти — не единственная проблема, с которой мы можем столкнуться. В нашем первоначальном проекте приложения подразумевалось, что у нас будет только одно главное окно. При работе со многими окнами каждое главное окно будет иметь свой список файлов, открывавшихся последними, и свои параметры работы. Очевидно, что список последних открывавшихся файлов должен относиться ко всему приложению. Это можно обеспечить очень просто путем объявления статической переменной recentFiles, и тогда во всем приложении будет только один ее экземпляр. Но здесь мы должны обеспечить при каждом вызове функции updateRecentFileActions() для обновления меню File вызов ее для всех главных окон. Это выполняет следующий программный код:

foreach (QWidget *win, QApplication::topLevelWidgets()) {

if (MainWindow *mainWin = qobject_cast(win))

mainWin->updateRecentFileActions();

}

Здесь используется конструкция Qt foreach (она рассматривается в главе 11) для прохода по всем имеющимся в приложении виджетам и делается вызов функции updateRecentFileItems() для всех виджетов типа MainWindow. Аналогичным образом можно синхронизировать установку опций ShowGrid и Auto—Recalculate или убедиться в том, что не загружены два файла с одинаковым именем.

Рис 317 Однодокументный и многодокументный интерфейсы Приложения - фото 54

Рис. 3.17. Однодокументный и многодокументный интерфейсы.

Приложения, обеспечивающие работу с одним документом в главном окне, называются приложениями с однодокументным интерфейсом (SDI — single document interface). Распространенной альтернативой ему в Windows стал многодокументный интерфейс (MDI — multiple document interface), когда приложение имеет одно главное окно, в центральной области которого могут находиться окна многих документов. С помощью средств разработки Qt можно создавать как приложения SDI, так и приложения MDI на всех поддерживаемых платформах. На рис. 3.17 показан вид приложения Электронная таблица при использовании обоих подходов. Интерфейс MDI рассматривается в главе 6(«Управление компоновкой»).

Экранные заставки

Многие приложения при запуске выводят на экран заставки. Некоторыми разработчиками заставки используются, чтобы сделать менее заметным медленный запуск приложения, а в других случаях это делается для удовлетворения требований отделений, отвечающих за маркетинг. Можно очень просто добавить заставку в приложение Qt, используя класс QSplashScreen.

Класс QSplashScreen выводит на экран изображение до появления главного окна. Он также может вывести на изображение сообщение, информирующее пользователя о ходе процесса инициализации приложения. Обычно вызов заставки делается в функции main() до вызова функции QApplication::exec().

Ниже приводится пример функции main() , которая использует QSplashScreen для вывода заставки приложения, которое загружает модули и устанавливает сетевые соединения при запуске.

01 int main(int argc, char *argv[])

02 {

03 QApplication app(argc, argv);

04 QSplashScreen *splash = new QSplashScreen;

05 splash->setPixmap(QPixmap(":/images/splash.png"));

06 splash->show();

07 Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;

08 splash->showMessage(QObject::tr("Setting up the main window…"),

09 topRight, Qt::white);

10 MainWindow mainWin;

11 splash->showMessage(QObject::tr("Loading modules…"),

12 topRight, Qt::white);

13 loadModules();

14 splash->showMessage(QObject::tr("Establishing connections…"),

15 topRight, Qt::white);

16 establishConnections();

17 mainWin.show();

18 splash->finish(&mainWin);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Жасмин Бланшет читать все книги автора по порядку

Жасмин Бланшет - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




QT 4: программирование GUI на С++ отзывы


Отзывы читателей о книге QT 4: программирование GUI на С++, автор: Жасмин Бланшет. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x