Подсказки на компьютерную тематику

Можно подсмотреть, если забыли…

Как создать объект класса на C++ в Qt

Основы создания и использования классов и объектов в ООП на C++

    Классы на языке C++ лучше всего создавать следующим способом:

  • объявление создаваемого класса производится в файле с расширением .h, в котором прописывается название файла, а также названия методов и свойств класса
  • а реализация этого класса, т.е. описание их свойств, их значение и действия, которые должны выполнять методы прописываются в файле с расширением .cpp
  • заголовочный файл класса с расширением .h должен подключаться в тех файлах программы, в которых он будет использоваться

Пример создания класса и его объекта на C++

    Создание класса можно осуществить следующим образом:


  • Класс объявляется в файле fordbworkclass.h
  • #include "QMainWindow"
    #ifndef FORDBWORKCLASS_H
    #define FORDBWORKCLASS_H

    class Fordbworkclass //названия классов - с большой буквы!
    {
    //все рабочие функции описываются после public: и доступны из других функций
    public:
    //конструктор, установлен по умолчанию, автоматически срабатывает при создании объекта
    Fordbworkclass();

    int arrayPublic[15];//объявление массива из 15 элементов

    //присвоить значение переменной напрямую из-вне нельзя!
    //это возможно только через метод класса
    int varPublic=157;//объявление свойства класса

    //объявление метода, который вернет значение типа int
    int functionPublic();

    //private: элементы доступны только через метод этого класса!
    private:
    int varPrivate=77;

    //protected: элементы доступны только через метод этого класса!
    protected:
    int varProtected=779;
    };

    //создание дочернего класса ChildofFordbworkclass - наследование от класса Fordbworkclass, будет иметь те же свойства и значения, установленные в родительском классе
    class ChildofFordbworkclass : public Fordbworkclass{};

    #endif // FORDBWORKCLASS_H


  • Реализуется класс в файле fordbworkclass.cpp
  • #include "fordbworkclass.h" //подключение заголовочного файла класса

    #include "QDebug"

    //Класс::Метод класса
    Fordbworkclass::Fordbworkclass()
    {
    //описание действий конструктора, который сработает сразу при создании объекта этого класса,
    //но этот метод нельзя вызвать повторно!!!
    //может быть пустым, а может выполнять какие-либо действия
    qDebug()<< "Конструктор сработал!!!";
    }

    //прописать действия метода
    int Fordbworkclass::functionPublic()
    {
    //присвоить значение переменной напрямую извне нельзя!
    //это возможно только через метод класса
    //return this->varPublic;//можно вывести значение переменной public
    //return this->varPrivate;//можно вывести значение переменной private
    return this->varProtected;//можно вывести значение переменной protected
    }


  • После создания класса, в файле mainwindow.h следует добавить функцию, которая будет срабатывать при нажатии кнопки pushButton и запускать работу с классом и его объектом в класс MainWindow:
  • #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include "QMainWindow"

    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

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

    private:
    Ui::MainWindow *ui;

    private slots:
    void forWorkClasses(); // это созданный нами слот для работы с классами и объектами

    };
    #endif // MAINWINDOW_H


  • В главный файл main.cpp надо добавить заголовочный файл созданного класса fordbworkclass.h и больше можно ничего не менять:
  • #include "mainwindow.h"

    #include

    #include "fordbworkclass.h"//надо добавить файл класса в файл, в котором он используется

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;

    w.show();
    return a.exec();
    }


  • В содержимом mainwindow.cpp нужно поместить вызвать создаваемую функцию, которая и работает с примером объекта
  • #include "mainwindow.h"
    #include "ui_mainwindow.h"

    #include "fordbworkclass.h"//надо добавить файл класса в файл, в котором он используется

    #include "QDebug"
    #include "QLabel"

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

    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(forWorkClasses()));
    }

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

    void MainWindow::forWorkClasses(){

    //создание объекта base класса Fordbworkclass
    Fordbworkclass base;

    //к свойствам и методам объекта на C++ нужно обращаться, используя знак точки "."

    //qDebug() << "base.varPrivate = "<< base.varPrivate;//выдает ошибку, так как имеет тип private
    qDebug() << "base.varPublic = "<< base.varPublic;//выдает значение, как и положено
    //qDebug() << "base.varProtected = "<< base.varProtected;//выдает ошибку, так как имеет тип protected

    //метод класса типа public может вывести значение переменной класса или его свойства любого типа
    qDebug() << "base.varPrivate use function = "<< base.functionPublic();//выдает значение, как и положено
    qDebug() << "base.varPublic use function = "<< base.functionPublic();//выдает значение, как и положено
    qDebug() << "base.varProtected use function = "<< base.functionPublic();//выдает значение, как и положено

    //создание объекта childbase дочернего класса ChildofFordbworkclass
    ChildofFordbworkclass childbase;

    //qDebug() << "childbase.varPrivate = "<< childbase.varPrivate;//выдает ошибку, так как имеет тип private
    qDebug() << "childbase.varPublic = "<< childbase.varPublic;//выдает значение, как и положено
    //qDebug() << "childbase.varProtected = "<< childbase.varProtected;//выдает ошибку, так как имеет тип protected

    //внесение данных в массив класса
    for (int i=0;i<15;i++ ) { base.arrayPublic[i]=i*2; } //вывод данных из массива класса for (int i=14;i>=0;i--) {
    qDebug()<< "Элементы массива = " << base.arrayPublic[i];
    }

    }


  • В дизайнере программы с расширением .ui создать элемент кнопки pushButton

Как создать объект класса на C++ в Qt

Основы создания и использования классов и объектов в ООП на C++

    Классы на языке C++ лучше всего создавать следующим способом:

  • объявление создаваемого класса производится в файле с расширением .h, в котором прописывается название файла, а также названия методов и свойств класса
  • а реализация этого класса, т.е. описание их свойств, их значение и действия, которые должны выполнять методы прописываются в файле с расширением .cpp
  • заголовочный файл класса с расширением .h должен подключаться в тех файлах программы, в которых он будет использоваться

Пример создания класса и его объекта на C++

    Создание класса можно осуществить следующим образом:


  • Класс объявляется в файле fordbworkclass.h
  • #include "QMainWindow"
    #ifndef FORDBWORKCLASS_H
    #define FORDBWORKCLASS_H

    class Fordbworkclass //названия классов - с большой буквы!
    {
    //все рабочие функции описываются после public: и доступны из других функций
    public:
    //конструктор, установлен по умолчанию, автоматически срабатывает при создании объекта
    Fordbworkclass();

    int arrayPublic[15];//объявление массива из 15 элементов

    //присвоить значение переменной напрямую из-вне нельзя!
    //это возможно только через метод класса
    int varPublic=157;//объявление свойства класса

    //объявление метода, который вернет значение типа int
    int functionPublic();

    //private: элементы доступны только через метод этого класса!
    private:
    int varPrivate=77;

    //protected: элементы доступны только через метод этого класса!
    protected:
    int varProtected=779;
    };

    //создание дочернего класса ChildofFordbworkclass - наследование от класса Fordbworkclass, будет иметь те же свойства и значения, установленные в родительском классе
    class ChildofFordbworkclass : public Fordbworkclass{};

    #endif // FORDBWORKCLASS_H


  • Реализуется класс в файле fordbworkclass.cpp
  • #include "fordbworkclass.h" //подключение заголовочного файла класса

    #include "QDebug"

    //Класс::Метод класса
    Fordbworkclass::Fordbworkclass()
    {
    //описание действий конструктора, который сработает сразу при создании объекта этого класса,
    //но этот метод нельзя вызвать повторно!!!
    //может быть пустым, а может выполнять какие-либо действия
    qDebug()<< "Конструктор сработал!!!";
    }

    //прописать действия метода
    int Fordbworkclass::functionPublic()
    {
    //присвоить значение переменной напрямую извне нельзя!
    //это возможно только через метод класса
    //return this->varPublic;//можно вывести значение переменной public
    //return this->varPrivate;//можно вывести значение переменной private
    return this->varProtected;//можно вывести значение переменной protected
    }


  • После создания класса, в файле mainwindow.h следует добавить функцию, которая будет срабатывать при нажатии кнопки pushButton и запускать работу с классом и его объектом в класс MainWindow:
  • #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include "QMainWindow"

    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

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

    private:
    Ui::MainWindow *ui;

    private slots:
    void forWorkClasses(); // это созданный нами слот для работы с классами и объектами

    };
    #endif // MAINWINDOW_H


  • В главный файл main.cpp надо добавить заголовочный файл созданного класса fordbworkclass.h и больше можно ничего не менять:
  • #include "mainwindow.h"

    #include

    #include "fordbworkclass.h"//надо добавить файл класса в файл, в котором он используется

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;

    w.show();
    return a.exec();
    }


  • В содержимом mainwindow.cpp нужно поместить вызвать создаваемую функцию, которая и работает с примером объекта
  • #include "mainwindow.h"
    #include "ui_mainwindow.h"

    #include "fordbworkclass.h"//надо добавить файл класса в файл, в котором он используется

    #include "QDebug"
    #include "QLabel"

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

    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(forWorkClasses()));
    }

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

    void MainWindow::forWorkClasses(){

    //создание объекта base класса Fordbworkclass
    Fordbworkclass base;

    //к свойствам и методам объекта на C++ нужно обращаться, используя знак точки "."

    //qDebug() << "base.varPrivate = "<< base.varPrivate;//выдает ошибку, так как имеет тип private
    qDebug() << "base.varPublic = "<< base.varPublic;//выдает значение, как и положено
    //qDebug() << "base.varProtected = "<< base.varProtected;//выдает ошибку, так как имеет тип protected

    //метод класса типа public может вывести значение переменной класса или его свойства любого типа
    qDebug() << "base.varPrivate use function = "<< base.functionPublic();//выдает значение, как и положено
    qDebug() << "base.varPublic use function = "<< base.functionPublic();//выдает значение, как и положено
    qDebug() << "base.varProtected use function = "<< base.functionPublic();//выдает значение, как и положено

    //создание объекта childbase дочернего класса ChildofFordbworkclass
    ChildofFordbworkclass childbase;

    //qDebug() << "childbase.varPrivate = "<< childbase.varPrivate;//выдает ошибку, так как имеет тип private
    qDebug() << "childbase.varPublic = "<< childbase.varPublic;//выдает значение, как и положено
    //qDebug() << "childbase.varProtected = "<< childbase.varProtected;//выдает ошибку, так как имеет тип protected

    //внесение данных в массив класса
    for (int i=0;i<15;i++ ) { base.arrayPublic[i]=i*2; } //вывод данных из массива класса for (int i=14;i>=0;i--) {
    qDebug()<< "Элементы массива = " << base.arrayPublic[i];
    }

    }


  • В дизайнере программы с расширением .ui создать элемент кнопки pushButton