Qt: QObject:: connect: не удается подключиться (null)
Я пытаюсь подключить сигнал от QProcess
внутри mainwindow()
объекта к другому QObject
класса внутри моей mainwindow()
объект, но я получаю эту ошибку:
QObject::connect: Cannot connect (null)::readyReadStandardOutput () to (null)::logReady()
вот код, он не завершен никоим образом, но я не знаю, почему он не работает.
exeProcess.h
#ifndef EXEPROCESS_H
#define EXEPROCESS_H
#include <QObject>
class exeProcess : public QObject
{
Q_OBJECT
public:
explicit exeProcess(QObject *parent = 0);
signals:
void outLog(QString outLogVar); //will eventually connect to QTextEdit
public slots:
void logReady();
};
#endif // EXEPROCESS_H
exeProcess.cpp
#include "exeprocess.h"
exeProcess::exeProcess(QObject *parent) :
QObject(parent)
{
}
void exeProcess::logReady(){
}
файл MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QProcess>
#include "exeprocess.h"
/*main window ---------------------------------------*/
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QProcess *proc;
exeProcess *procLog;
public slots:
private:
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);
connect(proc, SIGNAL(readyReadStandardOutput ()), procLog, SLOT(logReady()));
}
MainWindow::~MainWindow()
{
delete ui;
}
спасибо!.
2 ответов
вам нужно создать proc
и procLog
объекты.
у вас есть только указатели как члены класса, поэтому вам придется инициализировать их (с new
). connect
работает только на живых объектах.
proc-указатель, но он ни на что не указывает. Вы должны инстанцировать чтения qprocess прежде чем вы подключите его!
proc = new QProcess();
connect(proc, SIGNAL(readyReadStandardOutput ()), procLog, SLOT(logReady()));