• Разработка Qt - структура Qt-приложения.?

    @tugo
    Посмотрите это видео. Вот так, для начала, должна выглядеть структура вашего приложения.
    1. Для построения графического интерфейса пользуйтесь Qt Designer (а не размещая врукопашную виджеты, как это делаете вы).
    2. В первом, самом простом приложении, должно быть 4 файла исходных кодов.
    main.cpp
    MainWindow.h
    MainWindow.cpp
    MainWindow.ui
    // MainWindow.h
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget * parent = 0);
        ~MainWindow();
    
    signals:
    
    protected:
    
    private:
        Ui::MainWindow * ui;
    };


    3. Если количество элементов в MainWindow становится слишком большим, выделяйте элементы в отдельные классы, наследники класса QWidget.
    Допустим, у вас в MainWindow расположен элемент Tab Widget, в котором 2 вкладки.
    Логично вынести логику работы элементов в каждой вкладке в свой класс, т.е. у вас в проекте должно появиться еще 6 файлов:
    MyTabWidget1.h
    MyTabWidget1.cpp
    MyTabWidget1.ui

    MyTabWidget2.h
    MyTabWidget2.cpp
    MyTabWidget2.ui

    // MyTabWidget1.h
    #pragma once
    
    #include <QWidget>
    
    namespace Ui {
    class MyTabWidget1;
    }
    
    class MyTabWidget1: public QWidget
    {
        Q_OBJECT
    
    public:
        explicit MyTabWidget1(QWidget * parent = 0);
        ~MyTabWidget1();
    
    private:
        Ui::MyTabWidget1* ui;
    };


    В классе MainWindow используются объекты классов MyTabWidget1 и MyTabWidget2.
    Логика работы MainWindow резко похудеет, все перенесется в MyTabWidget1 и MyTabWidget2.

    4. Дальше. Избегайте реализации логики работы класса GUI. Эти классы (MyTabWidget1 и MyTabWidget2, MainWindow) должны быть простыми прокладками, трансляторами сигналов от пользователя в логику работы приложения и визуализаторами состояния приложения пользователю.
    Начинаете логику работы приложения реализовывать в отдельном классе.
    Обмен информацией между Logic <--> MainWindow возложите на сигналы-слоты.
    Ответ написан
    Комментировать