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

Тут можно читать бесплатно Жасмин Бланшет - QT 4: программирование GUI на С++. Жанр: Компьютеры и Интернет / Программирование, год -. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Жасмин Бланшет - QT 4: программирование GUI на С++

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

Рис. 2.5. Qt Designer в режиме пристыкованного окна в системе Windows.

Затем передвиньте низ формы вверх, чтобы она стала короче. В результате вы получите форму, похожую на показанную на рис. 2.6. Не тратьте слишком много времени на позиционирование элементов на форме; менеджеры компоновки Qt позже выполнят точное их позиционирование.

Рис. 2.6. Форма с несколькими виджетами.

Задайте свойства каждого виджета, используя редактор свойств Qt Designer.

1. Щелкните по текстовой метке. Убедитесь, что свойство objectName (имя объекта) имеет значение «label» (текстовая метка), а свойство text (текст) установите на значение «&Cell Location» (расположение ячейки).

2. Щелкните по строке редактирования. Убедитесь, что свойство objectName имеет значение «lineEdit» (строка редактирования).

3. Щелкните по первой кнопке. Установите свойство objectName на значение «okButton» (кнопка подтверждения), свойство enabled (включена) на значение «false» (ложь), свойство default (режим умолчания) на «true» (истина), свойство text на значение «OK» (подтвердить).

4. Щелкните по второй кнопке. Установите свойство objectName на значение «cancelButton» (кнопка отмены) и свойство text на значение «Cancel» (отменить).

5. Щелкните по свободному месту формы для выбора самой формы. Установите objectName на значение «GoToCellDialog» (диалоговое окно перехода на ячейку) и windowTitle (заголовок окна) на значение «Go to Cell» (перейти на ячейку).

Теперь все виджеты выглядят привлекательно, кроме текстовой метки &Cell Location. Выберите Edit | Edit Buddies (Правка | Редактировать партнеров) для входа в специальный режим, позволяющий задавать партнеров. Щелкните по этой метке и перенесите красную стрелку на строку редактирования, а затем отпустите кнопку мышки. Теперь эта метка будет выглядеть как Cell Location и иметь строку редактирования в качестве партнера. Выберите Click Edit | Edit Widgets (Правка | Редактировать виджеты) для выхода из режима установки партнеров.

Рис. 2.7. Вид формы после установки свойств виджетов.

На следующем этапе виджеты размещаются в форме требуемым образом:

1. Щелкните по текстовой метке Cell Location и нажмите клавишу Shift одновременно со щелчком по полю редактирования, обеспечив одновременный выбор этих виджетов. Выберите в меню Form | Lay Out Horizontally (Форма | Горизонтальная компоновка).

2. Щелкните по растяжке, затем, удерживая клавишу Shift, щелкните по клавишам OK и Cancel. Выберите в меню Form | Lay Out Horizontally.

3. Щелкните по свободному месту формы, аннулируя выбор любых виджетов, затем выберите в меню функцию Form | Lay Out Vertically (Форма | Вертикальная компоновка).

4. Выберите в меню функцию Form | Adjust Size для установки предпочитаемого размера формы.

Красными линиями на форме обозначаются созданные менеджеры компоновки. Они невидимы при выполнении программы.

Рис. 2.8. Форма с менеджерами компоновки.

Теперь выберите в меню функцию Edit | Edit Tab Order (Правка | Редактировать порядок перехода по клавише табуляции). Рядом с каждым виджетом, которому может передаваться фокус, появятся синие прямоугольники. Щелкните по каждому виджету, соблюдая необходимую вам последовательность перевода фокуса, затем выберите в меню функцию Edit | Edit Widgets для выхода из режима редактирования переходов по клавише табуляции.

Рис. 2.9. Установка последовательности перевода фокуса по виджетам формы.

Для предварительного просмотра спроектированного диалогового окна выберите в меню функцию Form | Preview (Форма | Предварительный просмотр). Проверьте последовательность перехода фокуса, нажимая несколько раз клавишу табуляции. Нажмите одновременно клавиши Alt+C для перевода фокуса на строку редактирования. Нажмите на кнопку Cancel для прекращения работы.

Сохраните спроектированное диалоговое окно в файле gotocelldialog.ui в каталоге с названием gotocell и создайте файл main.cpp в том же каталоге с помощью обычного текстового редактора.

01 #include <QApplication>

02 #include <QDialog>

03 #include "ui_gotocelldialog.h"

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

05 {

06 QApplication app(argc, argv);

07 Ui::GoToCellDialog ui;

08 QDialog *dialog = new QDialog;

09 ui.setupUi(dialog);

10 dialog->show();

11 return app.exec();

12 }

Теперь выполните команду qmake для создания файла с расширением .pro и затем создайте файл makefile (команды qmake —project; qmake gotocell.pro). Программе qmake «хватит ума» обнаружить файл пользовательского интерфейса gotocelldialog.ui и сгенерировать соответствующие команды для вызова uic — компилятора пользовательского интерфейса, входящего в состав средств разработки Qt. Компилятор uic преобразует gotocelldialog.ui в инструкции С++ и помещает результат в ui_gotocelldialog.h.

Полученный файл ui_gotocelldialog.h содержит определение класса Ui::GoToCellDialog, который содержит инструкции С++, эквивалентные файлу gotocelldialog.ui. В этом классе объявляются переменные—члены, в которых содержатся дочерние виджеты и менеджеры компоновки формы, а также функция setupUi(), которая инициализирует форму. Сгенерированный класс выглядит следующим образом:

class Ui::GoToCellDialog

{

public:

QLabel *label;

QLineEdit *lineEdit;

QSpacerItem *spacerItem;

QPushButton *okButton;

QPushButton *cancelButton;

void setupUi(QWidget *widget) {

}

};

Сгенерированный класс не наследует никакой Qt—класс. При использовании формы в main.cpp мы создаем QDialog и передаем его функции setupUi().

Если вы станете выполнять программу в данный момент, она будет работать, но не совсем так, как требуется:

• кнопка OK всегда будет в неактивном состоянии;

• кнопка Cancel не выполняет никаких действий;

• поле редактирования будет принимать любой текст, а оно должно принимать только допустимое обозначение ячейки.

Правильную работу диалогового окна мы можем обеспечить, написав некоторый программный код. Лучше всего создать новый класс, который наследует QDialog и Ui::GoToCellDialog и реализует недостающую функциональность (подтверждая известное утверждение, что любую проблему программного обеспечения можно решить, просто добавив еще один уровень представления объектов). По нашим правилам мы даем этому новому классу такое же имя, которое генерируется компилятором uic, но без префикса Ui::.

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

01 #ifndef GOTOCELLDIALOG_H

02 #define GOTOCELLDIALOG_H

03 #include <QDialog>

04 #include "ui_gotocelldialog.h"

05 class GoToCellDialog : public QDialog, public Ui::GoToCellDialog

06 {

07 Q_OBJECT

08 public:

09 GoToCellDialog(QWidget *parent = 0);

10 private slots:

11 void on_lineEdit_textChanged();

12 };

13 #endif

Реализация методов класса делается в файле gotocelldialog.cpp:

01 #include <QtGui>

02 #include "gotocelldialog.h"

03 GoToCellDialog::GoToCellDialog(QWidget *parent)

04 : QDialog(parent)

05 {

06 setupUi(this);

07 QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");

08 lineEdit->setValidator(new QRegExpValidator(regExp, this));

09 connect(okButton, SIGNAL(clicked()),

10 this, SLOT(accept()));

11 connect(cancelButton, SIGNAL(clicked()),

12 this, SLOT(reject()));

13 }

14 void GoToCellDialog::on_lineEdit_textChanged()

15 {

16 okButton->setEnabled(lineEdit->hasAcceptableInput());

17 }

В конструкторе мы вызываем setupUi() для инициализации формы. Благодаря множественному наследованию мы можем непосредственно получить доступ к членам класса Ui::GoToCellDialog. После создания пользовательского интерфейса setupUi() будет также автоматически подключать все слоты с именами типа on_objectName_signalName() к соответствующему сигналу signalName() виджета objectName. В нашем примере это означает, что setupUi() будет устанавливать следующее соединение «сигнал—слот»:

connect(lineEdit, SIGNAL(textChanged(const QString &)),

this, SLOT(on_lineEdit_textChanged()));

Также в конструкторе мы задаем ограничение на допустимый диапазон вводимых значений. Qt обеспечивает три встроенных класса по проверке правильности значений: QIntValidator, QDoubleValidator и QRegExpValidator. В нашем случае мы используем QRegExpValidator, задавая регулярное выражение «[A—Za—z][1—9][0—9]{0,2}», которое означает следующее: допускается одна маленькая или большая буква, за которой следует одна цифра в диапазоне от 1 до 9; затем идут ноль, одна или две цифры в диапазоне от 0 до 9. (Введение в регулярные выражения вы можете найти в документации по классу QRegExp.)

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.