У меня есть проект, который содержит в себе два других (использую subdirs). Вызовом нужных функций из подпроектов занимается класс MainWindow, который находится, как бы, над ними (т.е. это не файл из подпроектов).
Проблема возникает, когда я пытаюсь обратиться с "управляющего" файла к классам подпроектов.
Ошибки:
Управляющий файл
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
// Здесь подключаются только GUI библиотеки, вроде QPushButton и др.
//namespace Ui {
//class MainWindow;
//}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void slot_showTable(); // В этом слоте происходит обращение к подпроекту
private:
// Тут GUI переменные, вроде QPushButton, QLabel и т.д.
// Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
//#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
// ui(new Ui::MainWindow)
{
// ui->setupUi(this);
createConnections();
}
void MainWindow::createConnections()
{
// Нужный нам слот
connect(btnShowBoardTable, &QPushButton::clicked,
this, &MainWindow::slot_showTable);
...
}
#include "subproject/crutch.h"
void MainWindow::slot_showTable()
{
Crutch *s = new Crutch(); // Здесь и появляется ошибка. Если попытаться обратиться к любому методу класса, то ошибка появляется и на этот метод тоже
}
Файл, находящийся в подпроекте
crutch.h
// Этот файл находится в подпроекте
#ifndef CRUTCH_H
#define CRUTCH_H
#include "mainwindow.h" // Этот файл находится в том же подпроекте, что и crutch.h, именно в нём располагается класс TableMainWindow
#include <QObject>
class TableMainWindow;
class Crutch : public QObject
{
Q_OBJECT
public:
Crutch();
~Crutch();
void showMainWindow();
private:
TableMainWindow* mainWindow;
};
#endif // CRUTCH_H
crutch.cpp
#include "crutch.h"
Crutch::Crutch()
{
mainWindow = new TableMainWindow;;
}
void Crutch::showMainWindow()
{
mainWindow->show();
}
Crutch::~Crutch()
{
delete mainWindow;
}
Как мне кажется, проблема заключается в строчке #include "subproject/crutch.h"
но как исправить это не имею ни малейшего предположения.
P.S. в приведённом коде дважды встречается файл mainwindow, но это два разных файла. Просто один находится в подпроекте (он встречается в crutch.h), а второй в "шапке" проекта
MergeAllProjects.pro
TEMPLATE = subdirs
SUBDIRS = tablewindow
SUBDIRS += build
build.file = build.pro
SUBDIRS += cfg_browser_sh
build.pro
TEMPLATE = app
QT += widgets
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Pro-файл первого (с ним происходит взаимодействие) подпроекта
tablewindow.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = TableWindow
CONFIG += c++11
#TEMPLATE = app
TEMPLATE = lib
# каталог, в котором будет располагаться результирующий исполняемый файл
DESTDIR = $$OUT_PWD/bin
MOC_DIR = moc
OBJECTS_DIR = obj
RCC_DIR = rcc
UI_DIR = uic
DEFINES += QT_DEPRECATED_WARNINGS
include(cross/cross.pri)
include(table_window/table_window.pri)
INCLUDEPATH += $$PWD
SOURCES += \
crutch.cpp \
mainwindow.cpp
HEADERS += \
crutch.h \
mainwindow.h
FORMS += \
mainwindow.ui
RESOURCES += \
$$PWD/tablewindow.qrc
Так же имеется .pri файл, но он лишь содержит набор файлов, находящихся в этой же подпапке (headers, sources, forms)
Т.к. со вторым подпроектом взаимодействия нет (на данный момент), его .pro файлы решил не выкладывать (если необходимо, то и их предоставлю)
Здесь находятся все pro файлы проекта
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется связь OneToMany, У одного Region есть много DistrictsИмеется простой REST контроллер, который возвращает все Region, но ответ приходит
Напишите программу, которая загружает матрицу и выполняет указанные преобразования указанного массива на 90, -90, 90 градусовПреобразования...