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

Интервал:

Закладка:

Сделать

03 : QDialog(parent)

04 {

05 id = -1;

06 listWidget = new QListWidget;

07 listWidget->setIconSize(QSize(60, 60));

08 QMapIterator i(symbolMap);

09 while (i.hasNext()) {

10 i.next();

11 QListWidgetItem *item = new QListWidgetItem(i.value(),

12 listWidget);

13 item->setIcon(iconForSymbol(i.value()));

14 item->setData(Qt::UserRole, i.key());

15 …

16 }

17 }

Мы инициализируем id (идентификатор последнего выбранного элемента) значением —1. Затем мы конструируем QListWidget — удобный виджет отображения элементов. Мы проходим в цикле по всем элементам ассоциативного массива символов блок—схемы symbolMap и для каждого создаем объект QListWidgetItem. Конструктор QListWidgetItem принимает выводимую на экран строку QString и родительский виджет QListWidget.

Затем задаем пиктограмму элемента и вызываем setData() для сохранения в QListWidgetItem идентификатора элемента. Закрытая функция iconForSymbol() возвращает QIcon для заданного имени символа.

QListWidgetItem может выступать в разных ролях, каждой из которых соответствует определенный объект QVariant. Самыми распространенными ролями являются Qt::DisplayRole, Qt::EditRole и Qt::IconRole, и для них предусмотрены удобные функции по установке и получению их значений (setText(), setIcon()), но имеется также несколько других ролей. Кроме того, мы можем определить пользовательские роли, задавая числовое значение, равное или большее, чем Qt::UserRole. В нашем примере мы используем Qt::UserRole при сохранении идентификатора каждого элемента.

В непоказанной части конструктора создаются кнопки, выполняется компоновка виджетов и задается заголовок окна.

01 void FlowChartSymbolPicker::done(int result)

02 {

03 id = -1;

04 if (result == QDialog::Accepted) {

05 QListWidgetItem *item = listWidget->currentItem();

06 if (item)

07 id = item->data(Qt::UserRole).toInt();

08 }

09 QDialog::done(result);

10 }

Функция done() класса QDialog переопределяется. Она вызывается при нажатии пользователем кнопок ОК или Cancel. Если пользователь нажимает кнопку OK, мы получаем доступ к соответствующему элементу и извлекаем идентификатор, используя функцию data(). Если бы нас интересовал текст элемента, мы могли бы его получить с помощью вызова item->data(Qt::DisplayRole).toString() или более простого вызова item->text().

По умолчанию QListWidget используется только для чтения. Если бы мы хотели разрешить пользователю редактировать элементы, мы могли бы соответствующим образом установить переключатели редактирования представления, используя QAbstractItemView::setEditTriggers(), например QAbstractItemView::AnyKeyPressed означает, что пользователь может инициировать редактирование элемента, просто начав вводить символы с клавиатуры. Можно было бы поступить по-другому и предусмотреть кнопку редактирования Edit (и, возможно, кнопки добавления и удаления Add и Delete) и связать их со слотами, чтобы можно было программно управлять операциями редактирования.

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

Рис 104 Приложение Редактор координат Как и в предыдущем примере мы - фото 123

Рис. 10.4. Приложение Редактор координат.

Как и в предыдущем примере, мы основное внимание уделим программному коду, относящемуся к представлению элементов, и начнем с конструктора.

01 CoordinateSetter::CoordinateSetter(QList *coords,

02 QWidget *parent)

03 : QDialog(parent)

04 {

05 coordinates = coords;

06 tableWidget = new QTableWidget(0, 2);

07 tableWidget->setHorizontalHeaderLabels(

08 QStringList() << tr("X") << tr("Y"));

09 for (int row = 0; row < coordinates->count(); ++row) {

10 QPointF point = coordinates->at(row);

11 addRow();

12 tableWidget->item(row, 0)->setText(

13 QString::number(point.x()));

14 tableWidget->item(row, 1)->setText(

15 QString::number(point.y()));

16 }

17 …

18 }

Конструктор QTableWidget принимает начальное число строк и столбцов таблицы, выводимой на экран. Каждый элемент в QTableWidget представлен объектом QTableWidgetltem, включая элементы заголовков строк и столбцов. Функция setHorizontalHeaderLabels() задает заголовки всем столбцам, используя соответствующий текст из переданного списка строк. По умолчанию QTableWidget обеспечивает заголовки строк числовыми метками, начиная с 1; именно это нам и нужно, поэтому нам не приходится задавать вручную заголовки строк.

После создания и центровки заголовков столбцов мы в цикле просматриваем все переданные нам данные с координатами. Для каждой пары (x, у) мы создаем два элемента QTableWidgetItem, соответствующие координатам x и у. Эти элементы добавляются в таблицу, используя функцию QTableWidget::setItem(), в аргументах которой кроме самого элемента задаются его строка и столбец.

По умолчанию виджет QTableWidget разрешает редактирование. Пользователь может редактировать любую ячейку таблицы, установив на нее курсор и нажав F2 или просто вводя текст с клавиатуры. Все сделанные пользователем изменения автоматически сохранятся в элементах QTableWidgetltem. Запретить редактирование мы можем с помощью вызова setEditTriggers(QAbstractItemView::NoEditTriggers).

01 void CoordinateSetter::addRow()

02 {

03 int row = tableWidget->rowCount();

04 tableWidget->insertRow(row);

05 QTableWidgetltem *item0 = new QTableWidgetltem;

06 item0->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);

07 tableWidget->setItem(row, 0, item0);

08 QTableWidgetltem *item1 = new QTableWidgetltem;

09 item1->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);

10 tableWidget->setItem(row, 1, item1);

11 tableWidget->setCurrentItem(item0);

12 }

Слот addRow() вызывается, когда пользователь щелкает по кнопке Add Row (добавить строку). Мы добавляем в конец таблицы новую строку, используя insertRow(). Если пользователь попытается отредактировать какую-нибудь ячейку новой строки, QTableWidget автоматически создаст новый объект QTableWidgetItem.

01 void CoordinateSetter::done(int result)

02 {

03 if (result == QDialog::Accepted) {

04 coordinates->clear();

05 for (int row = 0; row < tableWidget->rowCount(); ++row) {

06 double x = tableWidget->item(row, 0)->text().toDouble();

07 double у = tableWidget->item(row, 1)->text().toDouble();

08 coordinates->append(QPointF(x, y));

09 }

10 }

11 QDialog::done(result);

12 }

Наконец, когда пользователь нажимает кнопку OK, мы очищаем координаты, переданные ранее в диалоговое окно, и создаем новый набор на основе координат в элементах виджета QTableWidget.

В качестве нашего третьего и последнего примера применения в Qt удобных виджетов отображения элементов мы рассмотрим некоторые фрагменты приложения, которое показывает параметры настройки Qt—приложения, используя QTreeWidget. Данный виджет по умолчанию используется только для чтения.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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