Жасмин Бланшет - 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 на С++ - читать книгу онлайн бесплатно, автор Жасмин Бланшет
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

01 void MainWindow::changeEvent(QEvent *event)

02 {

03 if (event->type() == QEvent::LocaleChange) {

04 appTranslator.load("callcenter_"

05 + QLocale::system().name(), qmPath);

06 qtTranslator.load("qt_" + QLocale::system().name(), qmPath);

07 retranslateUi();

08 }

09 QMainWindow::changeEvent(event);

10 }

Если пользователь переключается на другую локализацию во время выполнения приложения, мы пытаемся загрузить файлы перевода, соответствующие новой локализации, и вызываем функцию retranslateUi() для обновления интерфейса пользователя. Во всех случаях мы передаем событие функции базового класса changeEvent(), поскольку один из наших классов тоже может быть заинтересован в обработке событий LocaleChange или других событий.

На этом мы закончили наш обзор программного кода класса MainWindow. Теперь мы рассмотрим программный код одного из классов—виджетов приложения, а именно класса JournalView, чтобы определить, какие изменения потребуются для обеспечения поддержки им динамического перевода.

01 JournalView::JournalView(QWidget *parent)

02 : QTableWidget(parent)

03 {

04 retranslateUi();

05 }

Класс JournalView является подклассом QTableWidget. В конце конструктора мы вызываем закрытую функцию retranslateUi() для перевода строк виджета. Это напоминает то, что мы делали для класса MainWindow.

01 void JournalView::changeEvent(QEvent *event)

02 {

03 if (event->type() == QEvent::LanguageChange)

04 retranslateUi();

05 QTableWidget::changeEvent(event);

06 }

Мы также переопределяем функцию changeEvent() для вызова retranslateUi() при генерации событий LanguageChange. Qt генерирует событие LanguageChange при изменении содержимого объекта QTranslator, который в данный момент используется в QApplication. В нашем приложении это происходит, когда мы вызываем load() для appTranslator или qtTranslator либо из функции MainWindow::switchToLanguage(), либо из функции MainWindow::changeEvent().

События LanguageChange не следует путать с событиями LocaleChange. Событие LocaleChange генерируется системой и говорит приложению: «Возможно, следует загрузить новый файл перевода». В отличие от него, событие LanguageChange генерируется Qt и говорит виджетам приложения: «Возможно, следует заново выполнить перевод всех ваших строк».

При реализации нами класса MainWindow не нужно было реагировать на событие LanguageChange. Вместо этого мы просто всякий раз вызывали функцию retranslateUi() при вызове load() для QTranslator.

01 void JournalView::retranslateUi()

02 {

03 QStringList labels;

04 labels << tr("Time") << tr("Priority") << tr("Phone Number")

05 << tr("Subject");

06 setHorizontalHeaderLabels(labels);

07 }

Функция retranslateUi() заново создает заголовки, используя новый переведенный текст, и этим мы завершаем рассмотрение программного кода, относящегося к переводу созданного вручную виджета. Для виджетов и диалоговых окон, которые разрабатываются при помощи Qt Designer, утилита uic автоматически генерирует функцию, подобную retranslateUi(), которая автоматически вызывается в ответ на события LanguageChange.

Перевод приложений

Перевод приложения Qt, которое содержит вызовы tr(), состоит из трех этапов:

1. Выполнение утилиты lupdate для извлечения из исходного кода приложения всех видимых пользователем строк.

2. Перевод приложения при помощи Qt Linguist.

3. Выполнение утилиты lrelease для получения двоичных файлов .qm, которые приложение может загружать при помощи объекта QTranslator.

Этапы 1 и 3 выполняются разработчиками приложения. Этап 2 выполняется переводчиками. Эта последовательность действий может выполняться любое количество раз в ходе разработки приложения и на протяжении всего его жизненного цикла.

В качестве примера мы продемонстрируем перевод приложения Электронная таблица из главы 3. Приложение уже содержит вызовы tr() для всех видимых пользователем строк.

Во-первых, мы должны немного модифицировать файл приложения .pro, указав языки, которые мы собираемся поддерживать. Например, если бы мы хотели поддерживать кроме английского также немецкий и французский, мы бы добавили следующий элемент TRANSLATIONS в файл spreadsheet.pro:

TRANSLATIONS = spreadsheet_de.ts

\ spreadsheet_fr.ts

Здесь мы указали два файла переводов: один для немецкого языка и второй для французского языка.

Эти файлы будут созданы при первом выполнении утилиты lupdate, и затем они будут обновляться при каждом последующем выполнении lupdate.

Эти файлы обычно имеют расширение .ts. Они имеют простой формат XML и не столь компактны, как двоичные файлы .qm, которые «понимают» объекты типа QTranslator. В задачу утилиты lrelease входит преобразование предназначенных для людей файлов .ts в эффективное машинное представление в виде файлов .qm. Между прочим, сокращение .ts означает файл «translation source» (файл с исходным текстом перевода), а .qm — файл «Qt message» (файл сообщений Qt).

Предположим, что мы находимся в каталоге, который содержит исходный код приложения Электронная таблица, и тогда мы можем выполнить утилиту lupdate для spreadsheet.pro, задавая в командной строке следующую команду:

lupdate -verbose spreadsheet.pro

Опция —verbose указывает утилите lupdate на необходимость более интенсивной обратной связи, чем та, которая обеспечивается при нормальном режиме работы. Ниже приводятся сообщения, получения которых следует ожидать в результате работы утилиты:

Updating 'spreadsheet_de.ts'...

Found 98 source texts (98 new and 0 already existing)

Updating 'spreadsheet_fr.ts'...

Found 98 source texts (98 new and 0 already existing)

Все строки, которые задаются в вызовах функции tr() в исходном коде приложения, хранятся в файлах .ts (в том числе и псевдоперевод). Сюда также включаются строки из файлов приложения .ui.

По умолчанию утилита lupdate предполагает, что передаваемые функции tr() строки используют кодировку Latin-1. Если это не так, мы должны добавить элемент CODECFORTR в файл .pro. Например:

CODECFORTR = EUC-JP

Это должно быть сделано в дополнение к вызову QTextCodec::setCodecForTr() из функции приложения main().

Затем в файлы spreadsheet_de.ts и spreadsheet_fr.ts необходимо добавить перевод, выполненный при помощи Qt Linguist.

Для запуска Qt Linguist выберите пункт Qt by Trolltech v4.x.y | Linguist в меню Start в системе Windows, введите linguist в командной строке в системе Unix или дважды щелкните по Linguist в системе Mac OS X Finder. Для добавления перевода в файл .ts выберите пункт меню File | Open и укажите файл для перевода.

С левой стороны главного окна утилиты Qt Linguist отображается список всех контекстов переводимого на другие языки приложения. Для приложения Электронная таблица этими контекстами являются «FindDialog», «GoToCellDialog», «MainWindow», «SortDialog» и «Spreadsheet». Справа вверху выводится список всех исходных строк для текущего контекста. Каждая исходная строка сопровождается переводом и флажком Done (готово). Справа по центру находится область, где мы можем вводить перевод текущей исходной строки. Справа внизу отображаются подсказки по переводу, которые автоматически генерируются Qt Linguist.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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