Hallo,
ich bin schon seit geraumer Zeit am Versuchen, drei ProgressBars gleichzeitig mit Hilfe von QT Threads ablaufen zu lassen, leider klappt das nicht. Jetzt aber erstmal mein Code, ich e übrigens mit Eclipse unter Windows und dem QT-Plugin.
ttest1.h:
ttest1.cpp:
pbthread.h:
Wenn ich das ganze Kompiliere kommt immer folgender Fehler:
release/ttest1.o(.text+0x0):ttest1.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
release/moc_pbthread.o(.text+0x0):moc_pbthread.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
release/moc_ttest1.o(.text+0x0):moc_ttest1.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release/ttest1.exe] Error 1
mingw32-make[1]: Leaving directory `F:/eclipse/workspace/thread_test'
mingw32-make: *** [release] Error 2
Ich hab aber leider keine Ahnung warum das so ist, im Prinzip hab ich ja nur das Tutorial von QT dazu abgewandelt verwendet.
Gruß
cesupa
ich bin schon seit geraumer Zeit am Versuchen, drei ProgressBars gleichzeitig mit Hilfe von QT Threads ablaufen zu lassen, leider klappt das nicht. Jetzt aber erstmal mein Code, ich e übrigens mit Eclipse unter Windows und dem QT-Plugin.
ttest1.h:
Code:
#ifndef TTEST1_H
#define TTEST1_H
#include <QtGui/QWidget>
#include "ui_ttest1.h"
#include "pbthread.h"
class ttest1 : public QWidget
{
Q_OBJECT
public:
ttest1(QWidget *parent = 0);
~ttest1();
private:
Ui::ttest1Class ui;
pbthread *pbt;
private slots:
void on_startButton_clicked();
};
#endif // TTEST1_H
ttest1.cpp:
Code:
#include "ttest1.h"
ttest1::ttest1(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pbar1->setValue(0);
ui.pbar2->setValue(0);
ui.pbar3->setValue(0);
pbt=new pbthread(&ui);
}
ttest1::~ttest1()
{
delete pbt;
}
void ttest1::on_startButton_clicked()
{
pbt->start();
}
pbthread.h:
Code:
#ifndef PBTHREAD_H_
#define PBTHREAD_H_
#include <QtGui/QWidget>
#include "ui_ttest1.h"
#include <QThread>
//#undef run
class pbthread : public QThread
{
Q_OBJECT
public:
pbthread(Ui::ttest1Class* ui2){ui=ui2;}
~pbthread(){delete ui;}
void start(){run();}
protected:
void run();
private:
Ui::ttest1Class *ui;
};
void pbthread::run()
{
for(int i=0;i<101;i++)
{
ui->pbar1->setValue(i);
ui->pbar2->setValue(i);
ui->pbar3->setValue(i);
}
exec();
}
#endif /*PBTHREAD_H_*/
Wenn ich das ganze Kompiliere kommt immer folgender Fehler:
release/ttest1.o(.text+0x0):ttest1.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
release/moc_pbthread.o(.text+0x0):moc_pbthread.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
release/moc_ttest1.o(.text+0x0):moc_ttest1.cpp: multiple definition of `pbthread::run()'
release/main.o(.text+0x0):main.cpp: first defined here
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release/ttest1.exe] Error 1
mingw32-make[1]: Leaving directory `F:/eclipse/workspace/thread_test'
mingw32-make: *** [release] Error 2
Ich hab aber leider keine Ahnung warum das so ist, im Prinzip hab ich ja nur das Tutorial von QT dazu abgewandelt verwendet.
Gruß
cesupa