Возникла проблема: решил я сделать так, чтобы во время загрузки данных из файла, отображался QProgressBar. Просто так, это не сделать, так как понадобится несколько потоков
Я создал заголовочный файл:
Код: Выделить всё
#include <QThread>
class QProgressBar;
class ProgressBar : public QThread
{
public:
ProgressBar(QWidget* parent = 0);
void stop();
QProgressBar* pb;
void setMax(int);
void setValue(int);
protected:
void run();
private:
volatile bool isStopped;
};Затем описал функции:
Код:
#include <QtGui>
#include "progressbar.h"
ProgressBar::ProgressBar(QWidget *parent)
{
isStopped = false;
pb = new QProgressBar(parent);
}
void ProgressBar::setMax(int max)
{
pb->setRange(0,max);
}
void ProgressBar::setValue(int value)
{
pb->setValue(value);
}
void ProgressBar::run()
{
if ( !isStopped )
pb->show();
isStopped = false;
}
void ProgressBar::stop()
{
pb->hide();
isStopped = true;
}
И в конце концов, решил его применить:
Код:
if ( !progressBar )
progressBar = new ProgressBar;
// Считается кол-во строк
progressBar->setMax(rows);
progressBar->start();
rows = 0;
while ( !stream.atEnd() )
{
tempString = stream.readLine();
rows++;
progressBar->setValue(rows);
}
progressBar->stop();
Однако вот какой результат, при выполнении программы:
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QObject::startTimer: timers cannot be started from another thread
QObject::startTimer: timers cannot be started from another thread
Как исправлять?