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

Здесь есть возможность читать онлайн «Жасмин Бланшет - QT 4 - программирование GUI на С++» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: КУДИЦ-ПРЕСС, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

QT 4: программирование GUI на С++: краткое содержание, описание и аннотация

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «QT 4: программирование GUI на С++», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Создание подкласса QTableWidget

Класс Spreadsheet наследует QTableWidget. Виджет QTableWidget фактически является сеткой, представляющей собой двумерный разряженный массив. На нем отображается часть ячеек всей сетки, полученная при прокрутке изображения пользователем. При вводе пользователем текста в пустую ячейку QTableWidget автоматически создает элемент QTableWidgetItem для хранения текста.

Давайте начнем с реализации виджета и сначала приведем заголовочный файл:

01 #ifndef SPREADSHEET_H

02 #define SPREADSHEET_H

03 #include

04 class Cell;

05 class SpreadsheetCompare;

Заголовочный файл начинается с предварительных объявлений классов Cell и SpreadsheetCompare.

Рис 41 Деревья наследования для классов Spreadsheet и Cell Такие атрибуты - фото 57

Рис. 4.1. Деревья наследования для классов Spreadsheet и Cell.

Такие атрибуты ячейки QTableWidget, как ее текст и выравнивание, хранятся в QTableWidgetltem. В отличие от QTableWidget, класс QTableWidgetltem не является виджетом; это обычный класс данных. Класс Cell наследует QTableWidgetltem, и мы рассмотрим этот класс в последнем разделе данной главы, где представим его реализацию.

06 class Spreadsheet : public QTableWidget

07 {

08 Q_OBJECT

09 public:

10 Spreadsheet(QWidget *parent = 0);

11 bool autoRecalculate() const { return autoRecalc; }

12 QString currentLocation() const;

13 QString currentFormula() const;

14 QTableWidgetSelectionRange selectedRange() const;

15 void clear();

16 bool readFile(const QString &fileName);

17 bool writeFile(const QString &fileName);

18 void sort(const SpreadsheetCompare &compare);

Функция autoRecalculate() реализуется как встроенная (inline), поскольку она лишь показывает, задействован или нет режим автоматического перерасчета.

В главе 3мы опирались на использование некоторых открытых функций класса электронной таблицы Spreadsheet при реализации MainWindow Например, из MainWindow::newFile() мы вызывали функцию clear() для очистки электронной таблицы. Кроме того, мы вызывали некоторые функции, унаследованные от QTableWidget, а именно setCurrentCell() и setShowGrid().

19 public slots:

20 void cut();

21 void copy();

22 void paste();

23 void del();

24 void selectCurrentRow();

25 void selectCurrentColumn();

26 void recalculate();

27 void setAutoRecalculate(bool recalc);

28 void findNext(const QString &str, Qt::CaseSensitivity cs);

29 void findPrevious(const QString &str, Qt::CaseSensitivity cs);

30 signals:

31 void modified();

Класс Spreadsheet содержит много слотов, которые реализуют действия пунктов меню Edit, Tools и Options, и он содержит один сигал modified() для уведомления о возникновении любого изменения.

32 private slots:

33 void somethingChanged();

Мы определяем один закрытый слот, который используется внутри класса Spreadsheet.

34 private:

35 enum { MagicNumber = 0x7F51C883, RowCount = 999, ColumnCount = 26 };

36 Cell *cell(int row, int column) const;

37 QString text(int row, int column) const;

38 QString formula(int row, int column) const;

39 void setFormula(int row, int column, const QString &formula);

40 bool autoRecalc;

41 };

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

42 class SpreadsheetCompare

43 {

44 public:

45 bool operator()(const QStringList &row1, const QStringList &row2) const;

46 enum { KeyCount = 3 };

47 int keys[KeyCount];

48 bool ascending[KeyCount];

49 };

50 #endif

Заголовочный файл заканчивается определением класса SpreadsheetCompare. Мы объясним назначение этого класса при рассмотрении функции Spreadsheet::sort().

Теперь мы рассмотрим реализацию:

01 #include

02 #include "cell.h"

03 #include "spreadsheet.h"

04 Spreadsheet::Spreadsheet(QWidget *parent)

05 : QTableWidget(parent)

06 {

07 autoRecalc = true;

08 setItemPrototype(new Cell);

09 setSelectionMode(ContiguousSelection);

10 connect(this, SIGNAL(itemChanged(QTableWidgetItem *)),

11 this, SLOT(somethingChanged()));

12 clear();

13 }

Обычно при вводе пользователем некоторого текста в пустую ячейку QTableWidget будет автоматически создавать элемент QTableWidgetltem для хранения этого текста. Вместо этого мы хотим, чтобы создавались элементы Cell. Это достигается с помощью вызова в конструкторе функции setItemPrototype(). Всякий раз, когда требуется новый элемент, QTableWidget дублирует элемент, переданный в качестве прототипа.

Кроме того, в конструкторе мы устанавливаем режим выделения области на значение QAbstractItemView::ContiguousSelection, чтобы могла быть выделена только одна прямоугольная область. Мы соединяем сигнал itemChanged() виджета таблицы с закрытым слотом somethingChanged(); это гарантирует вызов слота somethingChanged() при редактировании ячейки пользователем. Наконец, мы вызываем clear() для изменения размеров таблицы и задания заголовков столбцов.

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

Интервал:

Закладка:

Сделать

Похожие книги на «QT 4: программирование GUI на С++»

Представляем Вашему вниманию похожие книги на «QT 4: программирование GUI на С++» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Бертрис Смолл - Дикарка Жасмин
Бертрис Смолл
Георгий Семенов - Жасмин в тени забора
Георгий Семенов
Жасмин Гиллори - Свадебное свидание
Жасмин Гиллори
Жасмин Майер - Онлайн
Жасмин Майер
Отзывы о книге «QT 4: программирование GUI на С++»

Обсуждение, отзывы о книге «QT 4: программирование GUI на С++» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x