Проблема, которую я получаю, заключается в следующем сообщении об ошибке при вызове connect, с MRC, являющимся избыточным пространством имен, которое, я думаю, не должно было добавляться Qt - boundSubWindow не определено внутри MRC. Насколько я понимаю, функция слота не найдена, потому что MRC :: был добавлен перед ее именем.
QObject :: connect: Нет такого слота MRC :: boundSubWindow :: myFunc (unsigned char *, int) вz: \ mrc \ mrc \ mrc.h: 23 QObject :: connect: (имя получателя: 'MRCClass')
Код
----------mrc.h ----------
#include <QtWidgets/QMainWindow>
#include "ui_MRC.h"
#include "myThread.h"
#include "boundsubwindow.h"
class MRC : public QMainWindow
{
Q_OBJECT
public:
MRC(QWidget *parent = Q_NULLPTR) : QMainWindow(parent)
{
ui.setupUi(this);
m_Thread = new myThread;
m_Subwindow = new boundSubWindow;
connect(MRC::m_Thread, SIGNAL(mySignal(char *, int)),
this, SLOT(boundSubWindow::myFunc(unsigned char *, int)));
}
static inline myThread *m_Thread;
boundSubWindow *m_Subwindow;
private:
Ui::MRCClass ui;
};
---------- boundsubwindow.h ----------
#include <QMdiSubWindow>
class boundSubWindow : public QMdiSubWindow
{
public:
boundSubWindow() {}
public slots:
void myFunc(unsigned char *, int);
};
---------- boundsubwindow.h ----------
void boundSubWindow::myFunc(unsigned char *, int) {}
---------- myThread.h ----------
#include <QThread>
class myThread : public QThread
{
Q_OBJECT
public:
myThread() {}
signals:
void mySignal(char *, int);
};
Я пропустил автоматически сгенерированный main.cpp для приложения с графическим интерфейсом Qt, а MRC.ui - сгенерированный автоматически, затем добавил QMdiArea с Qt Creator. Я использую Visual Studio 2017 и Qt 5.13