QThread

Alles rund um die Programmierung mit Qt
Antworten
qtprogram
Beiträge: 12
Registriert: 3. Oktober 2007 13:27

QThread

Beitrag von qtprogram »

Hi Hi,

ich versuche mich grade an QThread und bekomm eine merkwürdige Fehlermeldung:

MainWidget.cpp:304: error: request for member ‘run’ in ‘((MainWidget*)this)->MainWidget::thread’, which is of non-class type ‘QThread*’


Mein Code sieht folgendermaßen aus:
Thread.cpp:

Code: Alles auswählen

#include<QThread>
#include<iostream>

#include<Thread.h>
#include<MainWidget.h>



Thread::Thread(QObject *parent) : QThread(parent)

{
	stopped= false;
}

void Thread::run()
{
	while(!stopped)
		std::cout<< "hallo"<< std::endl;

}
//das hallo ist nur als Test, ob denn funktioniert
void Thread::stop()
{
	stopped = true;
}
Thread.h sieht so aus:

Code: Alles auswählen

#ifndef THREAD_H
#define THREAD_H

#include<QThread>

class Thread : public QThread 
{
Q_OBJECT
			
public:
	Thread (QObject *parent=0);
	void stop();

private:
	bool stopped;

protected:
	void run();
};
#endif
in meinem MainWidget möchte ich, dass der Thread erst ausgeführt wird, wenn ich auf "start" drücke und abbricht, wenn ich auf "Stop" drücke.

Mein Widget halt also folgendes:

Code: Alles auswählen

	QPushButton *start = new QPushButton("&Start");
	start->setFont(QFont("Times", 15, QFont::Bold));
	connect(start, SIGNAL(clicked()),this, SLOT(start()));
...........


	QPushButton *pause = new QPushButton("&Break");
	pause->setFont(QFont("Times", 15, QFont::Bold));
	
	connect(pause, SIGNAL(clicked()), this, SLOT(stop()));

........

void MainWidget::start()
{
	thread.run();
}

void MainWidget::stop()
{
	thread.stop();
}

wo lieg ich denn falsch? Hab ich grundsätzlich schon einen Fehler drin??

Ich bin um jede Hilfe dankbar

LG
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

dein run() ist protected - damit kannst du es nicht von aussen aufrufen. Mach es public.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Das run ist nicht umsonst protected. Richtig wäre es statt run start aufzurufen.
Von der Compilerfehlermeldung würde ich aber eher darauf schließen, dass irgendwas auf dem Heap angelegt werden sollte was nur auf dem Stack liegt. Ist mir aber zu unübersichtlich danach jetzt zu suchen. (Es gibt übrigens auch Code Tags für Beiträge)
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
qtprogram
Beiträge: 12
Registriert: 3. Oktober 2007 13:27

Beitrag von qtprogram »

okay danke.... aber ich bin mir grade unschlüssig Wo/ Was ich jetzt genau ändern muss...

Stimmt der rest sonst?

DANKE
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

"Richtig wäre es statt run start aufzurufen. "

klar genug?
Antworten