cpp

Создание проекта с формой

Если вы ранее пользовались Visual Studio или Delphi, то вспомните, что размещение компонентов на форме производили с помощью мыши. Щелкали левой кнопкой мыши на соответствующей кнопке на панели инструментов и перетаскивали компонент на форму. Далее с помощью инспектора свойств производили настройку значений некоторых свойств, а остальные свойства получали значения по умолчанию. При этом весь код генерировался автоматически. Редактор Qt Creator также позволяет использовать формы.

Давайте по аналогии с проектом Test создадим новый проект с названием TestForm. Только на третьем шаге мастера установим флажок Создать форму (рис. 1.31). Созданный проект на вкладке Проекты будет выглядеть так, как показано на рис. 1.32.

1_31.png

Рис. 1.31. Создание проекта. Шаг 3

1_32.png

Рис. 1.32. Файлы проекта TestForm

Чтобы отобразить форму щелкаем левой кнопкой мыши на названии файла widget.ui на вкладке Проекты. Результат показан на рис. 1.33.

1_33.jpg

Рис. 1.33. Редактирование формы в режиме Дизайн

На панели слева находим компонент Label, щелкаем на нем левой кнопкой мыши и не отпуская кнопку перетаскиваем компонент на форму. Далее находим компонент Push Button и перетаскиваем его на форму ниже надписи. Выделяем форму, щелкаем правой кнопкой мыши и из контекстного меню выбираем пункт Компоновка | Скомпоновать по вертикали.

Теперь изменим свойства компонентов. Выделяем текстовую надпись и на панели справа находим свойство objectName. Указываем для него значение label. Далее находим свойство text и для него указываем значение Привет, мир!. Можно также сделать двойной щелчок мыши на надписи и ввести значение. Находим свойство alignment, раскрываем список и для свойства Горизонтальное указываем значение AlignHCenter.

Выделяем кнопку и для свойства objectName указываем значение btn1, а для свойства text задаем значение Изменить надпись. Можно также сделать двойной щелчок мыши на кнопке и ввести значение. Затем щелкаем правой кнопкой мыши на кнопке и из контекстного меню выбираем пункт Перейти к слоту. Откроется окно, показанное на рис. 1.34. Выделяем пункт clicked() и нажимаем кнопку OK. В результате в файл widget.cpp будет вставлен следующий код, описывающий обработчик нажатия кнопки:

void Widget::on_btn1_clicked()
{
    
}

1_34.png

Рис. 1.34. Окно Переход к слоту

Давайте внутри обработчика нажатия кнопки изменим текст надписи. Для этого обращаемся к надписи через объект ui и вызываем метод setText():

void Widget::on_btn1_clicked()
{
   ui->label->setText("Новый текст");
}

Содержимое файла main.cpp приведено в листинге 1.6, файла widget.h — в листинге 1.7, файла widget.cpp — в листинге 1.8, а файла widget.ui — в листинге 1.9.

Листинг 1.6. Содержимое файла C:\cpp\projectsQt\TestForm\main.cpp

#include "widget.h"

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   Widget window;
   window.setWindowTitle("Заголовок окна");
   window.show();
   return app.exec();
}

Листинг 1.7. Содержимое файла C:\cpp\projectsQt\TestForm\widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QApplication>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
   Q_OBJECT

public:
   Widget(QWidget *parent = nullptr);
   ~Widget();

private slots:
   void on_btn1_clicked();

private:
   Ui::Widget *ui;
};
#endif // WIDGET_H

Листинг 1.8. Содержимое файла C:\cpp\projectsQt\TestForm\widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
   : QWidget(parent)
   , ui(new Ui::Widget)
{
   ui->setupUi(this);
}

Widget::~Widget()
{
   delete ui;
}

void Widget::on_btn1_clicked()
{
   ui->label->setText("Новый текст");
}

Листинг 1.9. Содержимое файла C:\cpp\projectsQt\TestForm\widget.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>350</width>
    <height>70</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Привет, мир!</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignCenter</set>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QPushButton" name="btn1">
     <property name="text">
      <string>Изменить надпись</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>

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

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp