class WorkingThread
: public QThread{
Q_OBJECT
public:
protected:
virtual void run();
signals:
void askAQuestion
( const QString
& question,
QMessageBox::StandardButton* answer
);
private slots:
void questionAsked
(const QString
& question,
QMessageBox::StandardButton* answer
);
private:
};
WorkingThread
::WorkingThread(QObject*parent
) {
connect(this,
SIGNAL(askAQuestion
( const QString
&,
QMessageBox::StandardButton*)),
this,
SLOT(questionAsked
( const QString
&,
QMessageBox::StandardButton*)));
}
void WorkingThread::run()
{
do
{
emit askAQuestion( "do you want to continue?", &answer);
waitCondition.wait(&mutex);
}
}
void WorkingThread
::questionAsked(const QString
& question,
QMessageBox::StandardButton* answer
) {
waitCondition.wakeOne();
}
class WorkingThread : public QThread
{
Q_OBJECT
public:
WorkingThread(QObject*parent=0);
protected:
virtual void run();
signals:
void askAQuestion( const QString& question, QMessageBox::StandardButton* answer);
private slots:
void questionAsked(const QString& question, QMessageBox::StandardButton* answer);
private:
QWaitCondition waitCondition;
QMutex mutex;
};
WorkingThread::WorkingThread(QObject*parent)
: QThread(parent=0)
{
connect(this, SIGNAL(askAQuestion( const QString&, QMessageBox::StandardButton*)),
this, SLOT(questionAsked( const QString&, QMessageBox::StandardButton*)));
}
void WorkingThread::run()
{
QMessageBox::StandardButton answer = QMessageBox::Yes;
do
{
QMutexLocker locker(&mutex);
emit askAQuestion( "do you want to continue?", &answer);
waitCondition.wait(&mutex);
}
while(answer == QMessageBox::Yes);
}
void WorkingThread::questionAsked(const QString& question, QMessageBox::StandardButton* answer)
{
QMutexLocker locker(&mutex);
*answer = QMessageBox::question(0, "Question:", question, QMessageBox::Yes|QMessageBox::No);
waitCondition.wakeOne();
}
To copy to clipboard, switch view to plain text mode
Bookmarks