MainWindow does not have a type
-
In my application I'm trying to send some values from a thread to the main GUI for updating the values of a spinbox.
The following is my code:
ProcessThread.h
@
#ifndef PROCESSTHREAD_H
#define PROCESSTHREAD_H#include<QtGui>
#include<QThread>
#include<QString>
#include<QObject>
#include"mainwindow.h"class ProcessThread : public QThread
{
Q_OBJECT
public:
MainWindow m;
explicit ProcessThread(QObject *parent = 0);
void run();signals:
void SendStoredTempValues(int temp1,int temp2,int temp3);
public slots:
void WriteFileToSD();
void WriteFileToUSB();
void LoadValuesFromUSB();
void Store_Temperatures(QByteArray temp);
private:};
#endif // MYTHREAD_H
@
ProcessThread.cpp
@#include "ProcessThread.h"
#include<QtCore>--
#include<QDebug>
#include<QDebug>
QByteArray Write_Values;void ProcessThread::WriteFileToSD()
{
int i;
QString OutputDirectory="/home/nithin";
QString Filename="newFile.txt";
QFile file(OutputDirectory+"/"+Filename);
file.open(QIODevice::WriteOnly | QFile::WriteOnly);
QTextStream out(&file);
for(i=0;i<3;i++)
{
out<<(qint32)Write_Values[i];
out<<';';
}
file.close();}
int temp1,temp2,temp3;
void ProcessThread::LoadValuesFromUSB()
{
int k=0;QString OutputDirectory="/media/SSTPL_2GB"; QString Filename="newFile.txt",f1,f2,f3; bool ok; QFile file(OutputDirectory+"/"+Filename); file.open(QIODevice::ReadOnly | QFile::ReadOnly); QByteArray file_read=file.readAll(); while(file_read[k]!=';') { f1=f1+file_read[k]; k++; } k++; while(file_read[k]!=';') { f2=f2+file_read[k]; k++; } k++; while(file_read[k]!=';') { f3=f3+file_read[k]; k++; } temp1=f1.toInt(&ok,10); temp2=f2.toInt(&ok,10); temp3=f3.toInt(&ok,10); emit SendStoredTempValues(temp1,temp2,temp3); connect(this,SIGNAL(SendStoredTempValues(int,int,int)),&m,SLOT(ValuesFromUSB(int,int,int)));
}
@If I try to include Mainwindow.h in my thread class I get the error as mainwindow does not have a type.
I tried removing mainwindow.h from processthread.h and tried including in processthread.cpp and created as:
Mainwindow m;(in ProcessThread.cpp instead of ProcessThread.h)This time, the code compiles but I get the error, as
The inferior stopped because it received signal from operating system.How to access Mainwindow in thread for sending connecting the slot ?
Thanks in advance!
-
Move the connect statement to your MainWindow. QWidget classes cannot be used outside of the GUI thread.
Also, please check out "QThread documentation":http://qt-project.org/doc/qt-4.8/qthread.html - you are subclassing it needlessly.