Посмотрите
это видео. Вот так, для начала, должна выглядеть структура вашего приложения.
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 возложите на сигналы-слоты.