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

Интервал:

Закладка:

Сделать

QSqlDriver *driver = QSqlDatabase::database().driver();

if (driver->hasFeature(QSqlDriver::Transactions))

Можно проверить наличие в базе данных ряда других возможностей, включая поддержку объектов BLOB (Binary Large Objects — большие двоичные объекты), Unicode и подготовленных запросов.

В приводимых до сих пор примерах мы предполагали, что в приложении используется одно соединение с базой данных. Если мы хотим создать несколько соединений, мы можем передавать название соединения в качестве второго аргумента функции addDatabase(). Например:

QSqlDatabase *db = QSqlDatabase::addDatabase("QPSQL", "OTHER");

db. setHostName("saturn.mcmanamy.edu");

db.setDatabaseName("starsdb");

db.setUserName("hilbert");

db.setPassword("ixtapa7");

Мы можем затем получить указатель на объект QSqlDatabase, передавая название соединения функции QSqlDatabase::database():

QSqlDatabase db = QSqlDatabase::database("OTHER");

Для выполнения запросов с другим соединением мы передаем объект QSqlDatabase конструктору QSqlQuery:

QSqlQuery query(db);

query.exec("SELECT id FROM artist WHERE name = 'Mando Diao'");

Несколько соединений полезны, если мы хотим выполнять одновременно несколько транзакций, поскольку каждое соединение может использоваться только для одной активной транзакции. Когда мы используем несколько соединений с базой данных, мы можем все-таки иметь одно непоименованное соединение и QSqlQuery будет использовать это соединение, если не указано поименованное соединение.

Кроме QSqlQuery Qt содержит класс QSqlTableModel — интерфейс высокого уровня, позволяя нам не использовать выражения SQL «в чистом виде» для выполнения наиболее распространенных SQL—команд (SELECT, INSERT, UPDATE и DELETE). Этот класс может использоваться автономно без какого-либо графического пользовательского интерфейса или в качестве источника данных для QListView или QTableView.

Ниже приводится пример использования QSqlTableModel для выполнения команды SELECT:

QSqlTableModel model;

model.setTable("cd");

model.setFilter("year >= 1998");

model.select();

Это эквивалентно запросу

SELECT * FROM cd WHERE year >= 1998

Просмотр результирующего набора выполняется путем получения заданной записи функцией QSqlTableModel::record() и доступа к отдельным полям с помощью функции value():

for (int i = 0; i < model.rowCount(); ++i) {

QSqlRecord record = model.record(i);

QString title = record.value("title").toString();

int year = record.value("year").toInt();

cerr << qPrintable(title) << ": " << year << endl;

}

Функция QSqlRecord::value() принимает либо имя поля, либо индекс поля. При работе с большими наборами данных рекомендуется задавать поля с помощью их индексов. Например:

int titleIndex = model.record().indexOf("title");

int yearIndex = model.record().indexOf("year");

for (int i = 0; i < model.rowCount(); ++i) {

QSqlRecord record = model.record(i);

QString title = record.value(titleIndex).toString();

int year = record.value(yearIndex).toInt();

cerr << qPrintable(title) << ": " << year << endl;

}

Для вставки записи в таблицу базы данных мы действуем так же, как если бы делали вставку в двумерную модель: сначала вызываем функцию insertRow() для создания новой пустой строки (записи) и затем используем setData() для установки значения каждого столбца (поля записи).

QSqlTableModel model;

model.setTable("cd");

int row = 0;

model.insertRows(row, 1);

model.setData(model.index(row, 0), 113);

model.setData(model.index(row, 1), "Shanghai My Heart");

model.setData(model.index(row, 2), 224);

model.setData(model.index(row, 3), 2003);

model.submitAll();

После вызова submitAll() запись может быть перемещена в другую позицию, зависящую от упорядоченности таблицы. Вызов submitAll() возвратит false, если вставка окажется неудачной.

Важным отличием модели SQL от стандартной модели является необходимость вызова в модели SQL функции submitAll() для записи всех изменений в базу данных

Для обновления записи мы должны сначала установить QSqlTableModel на запись, которую мы хотим модифицировать (например, используя функции select()). Затем мы извлекаем запись, обновляем соответствующие поля и записываем наши изменения обратно в базу данных:

QSqlTableModel model;

model.setTable("cd");

model.setFilter("id = 125");

model.select();

if (model.rowCount() == 1) {

QSqlRecord record = model.record(0);

record.setValue("title", "Melody A.M.");

record.setValue("year", record.value("year").toInt() + 1);

model.setRecord(0, record);

model.submitAll();

}

Если имеется запись, удовлетворяющая заданному фильтру, доступ к ней мы получаем при помощи функции QSqlTableModel::record(). Мы осуществляем наши изменения и вновь записываем в базу данных запись с новыми значениями полей.

Кроме того, обновление можно выполнить при помощи функции setData(), как это делается для модели, отличной от SQL—модели. Для получения доступа к полям записи используются индексы модели с указанием номера строки (записи) и столбца (поля):

model.select();

if (model.rowCount() == 1) {

model.setData(model.index(0, 1), "Melody A.M.");

model.setData(model.index(0, 3),

model.data(model.index(0, 3)).toInt() + 1);

model.submitAll();

}

Удаление записи напоминает ее обновление:

model.setTable("cd");

model.setFilter("id = 125");

model.select();

if (model.rowCount() == 1) {

model.removeRows(0, 1);

model.submitAll();

}

В вызове removeRows() указываются номер строки первой удаляемой записи и количество удаляемых записей. В следующем примере удаляются все записи, удовлетворяющие фильтру:

model.setTable("cd");

model.setFilter("year < 1990");

model.select();

if (model.rowCount() > 0) {

model.removeRows(0, model.rowCount());

model.submitAll();

}

Классы QSqlQuery и QSqlTableModel обеспечивают интерфейс между Qt и базой данных SQL. Используя эти классы, можно создавать формы, представляющие данные пользователям и позволяющие им вставлять, обновлять и удалять записи.

Представление данных в табличной форме

Во многих случаях табличное представление является самым простым представлением набора данных для пользователей. В этом и последующих разделах мы рассмотрим простое приложение CD Collection (Коллекция компакт-дисков), в котором модель QSqlTableModel и ее подкласс QSqlRelationalTableModel используются для просмотра и взаимодействия пользователей с данными, хранимыми в базе данных.

Главная форма показывает представление «master—detail» для компакт-дисков и дорожек текущего компакт-диска (рис. 13.1).

Рис 131 Приложение CD Collection В приложении используются три таблицы - фото 145

Рис. 13.1. Приложение CD Collection.

В приложении используются три таблицы, определенные следующим образом:

CREATE TABLE artist (

id INTEGER PRIMARY KEY,

name VARCHAR(40) NOT NULL,

country VARCHAR(40));

CREATE TABLE cd (

id INTEGER PRIMARY KEY,

title VARCHAR(40) NOT NULL,

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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