!!! OFF TOPIC !!!
Ist ja echt frustrierend
RAD heißt doch Rapid Application Development. Und es heißt doch immer mit Delphi geht alles immer so einfach im Gegensatz zu cpp. Ich habe ein Embedded Projekt mit Qt geschrieben und dachte mir ich versuche jetzt mal ob ich bei Qt auch dieses Problem habe....
Und siehe da, alles ganz einfach. Keine zusätzlichen privaten Felder in denen die zu übergebenden Werte stehen, keine zusätzlichen CS, keine zusätzlichen Methoden, keine Generic Queue oder was weiß ich für Tricksereien und im Gegensatz zu meiner Lösung bei Delphi funktioniert diese Qt Lösung (auf Anhieb nach 10 min)
Code:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void onProgress(qint32);
private:
Ui::MainWindow *ui;
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
MyThread *myThread;
myThread = new MyThread(this);
connect(myThread, SIGNAL(progress(qint32)),
this, SLOT(onProgress(qint32)));
myThread->start();
}
void MainWindow::onProgress(qint32 value)
{
ui->plainTextEdit->appendHtml("Value: " + QString::number(value));
Sleep(500);
qDebug() << QThread::currentThreadId() << "MainWindow::onProgress - Value:" << QString::number(value);
}
Code:
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QObject *parent = 0);
signals:
void progress(qint32 value);
public slots:
protected:
void run();
};
#include "MyThread.h"
#include <windows.h>
#include <QDebug>
MyThread::MyThread(QObject *parent) :
QThread(parent)
{
}
void MyThread::run()
{
for(qint32 i = 1; i <= 10; i++)
{
emit progress(i);
Sleep(200);
qDebug() << QThread::currentThreadId() << "MyThread::run() - Value:" << QString::number(i);
}
qDebug() << QThread::currentThreadId() << "Fertig";
}
Zitat:
0x14e8 MyThread::run() - Value: "1"
0x14e8 MyThread::run() - Value: "2"
0x13b4 MainWindow:
nProgress - Value: "1"
0x14e8 MyThread::run() - Value: "3"
0x14e8 MyThread::run() - Value: "4"
0x13b4 MainWindow:
nProgress - Value: "2"
0x14e8 MyThread::run() - Value: "5"
0x14e8 MyThread::run() - Value: "6"
0x14e8 MyThread::run() - Value: "7"
0x13b4 MainWindow:
nProgress - Value: "3"
0x14e8 MyThread::run() - Value: "8"
0x14e8 MyThread::run() - Value: "9"
0x14e8 MyThread::run() - Value: "10"
0x14e8 Fertig
0x13b4 MainWindow:
nProgress - Value: "4"
0x13b4 MainWindow:
nProgress - Value: "5"
0x13b4 MainWindow:
nProgress - Value: "6"
0x13b4 MainWindow:
nProgress - Value: "7"
0x13b4 MainWindow:
nProgress - Value: "8"
0x13b4 MainWindow:
nProgress - Value: "9"
0x13b4 MainWindow:
nProgress - Value: "10"
So, das musste mal raus. Jetzt gehts mir besser
Und wie mache ich es jetzt richtig in Delphi (siehe #25)?