Я начинающий в Qt. Разбираюсь с многопоточностью и не могу написать код, который одновременно менял значение QLCDNumber и постоянно нажимает кнопочку. Прошу помочь разобраться.
#ifndef LCDTHREAD_H
#define LCDTHREAD_H
#include <QThread>
class LCDThread : public QThread
{
Q_OBJECT
private:
int m_nValue;
public:
LCDThread(QObject *parent = 0);
void run();
signals:
void currentValue(int);
};
#endif // LCDTHREAD_H
#ifndef PBTHREAD_H
#define PBTHREAD_H
#include <QThread>
class PBThread : public QThread
{
Q_OBJECT
public:
PBThread(QObject *parent = 0);
void run();
signals:
void finished();
void click();
public slots:
void slotClick();
};
#endif // PBTHREAD_H
#include "lcdthread.h"
#include <QTimer>
LCDThread::LCDThread(QObject *parent) :
QThread(parent),
m_nValue(0)
{
}
void LCDThread::run()
{
while (true) {
emit currentValue(++m_nValue);
}
exec();
}
#include "pbthread.h"
PBThread::PBThread(QObject *parent) :
QThread(parent)
{
}
void PBThread::run()
{
while(true) {
emit click();
}
exec();
}
void PBThread::slotClick()
{
emit click();
}
#include <QtGui>
#include "lcdthread.h"
#include "pbthread.h"
int main(int argc, char** argv)
{
QApplication a(argc, argv);
QLCDNumber *plcd = new QLCDNumber(8);
LCDThread lcdThread;
plcd->setSegmentStyle(QLCDNumber::Flat);
QObject::connect(&lcdThread, SIGNAL(currentValue(int)), plcd, SLOT(display(int)));
QPushButton *ppbutton = new QPushButton("PUSH, FUCKING PSUH");
PBThread pbThread;
QObject::connect(&pbThread, SIGNAL(click()), ppbutton, SLOT(animateClick()));
QWidget wgt;
QHBoxLayout *l = new QHBoxLayout;
l->addWidget(plcd);
l->addWidget(ppbutton);
wgt.setLayout(l);
lcdThread.start();
pbThread.start();
wgt.show();
return a.exec();
}
Не могу сделать так, чтобы родительский виджет был доступен для перетаскиваний и прочего. Или для него надо писать свой поток?