Trying to update a progress bar in a dialog with a signal from an object launched from a thread and it's not working - no updates. Went over the doc and looked at many posts. The code looks right to me, but obviously, something is wrong.
The dialog:
HamlibNotice
::HamlibNotice(QWidget *parent
) : ui(new Ui::HamlibNotice)
{
ui->setupUi(this);
ui->progressBar->setValue(0);
connect(&load, SIGNAL(updateVal(int)), this, SLOT(updatePB(int)));
LoadHamlibThread* hamlibThread = new LoadHamlibThread;
connect(hamlibThread, SIGNAL(finished()), this, SLOT(closeNotice()));
hamlibThread->loadHamlib();
}
HamlibNotice::~HamlibNotice()
{
delete ui;
}
void HamlibNotice::updatePB(int val)
{
qDebug() << "in pb slot";
ui->progressBar->setValue(val);
}
void HamlibNotice::closeNotice()
{
HamlibNotice::close();
}
HamlibNotice::HamlibNotice(QWidget *parent) :
QDialog(parent),
ui(new Ui::HamlibNotice)
{
ui->setupUi(this);
ui->progressBar->setValue(0);
connect(&load, SIGNAL(updateVal(int)), this, SLOT(updatePB(int)));
LoadHamlibThread* hamlibThread = new LoadHamlibThread;
connect(hamlibThread, SIGNAL(finished()), this, SLOT(closeNotice()));
hamlibThread->loadHamlib();
}
HamlibNotice::~HamlibNotice()
{
delete ui;
}
void HamlibNotice::updatePB(int val)
{
qDebug() << "in pb slot";
ui->progressBar->setValue(val);
}
void HamlibNotice::closeNotice()
{
HamlibNotice::close();
}
To copy to clipboard, switch view to plain text mode
The thread:
LoadHamlibThread
::LoadHamlibThread(QObject *parent
) :{
}
void LoadHamlibThread::loadHamlib()
{
start();
}
void LoadHamlibThread::run()
{
LoadHamlib* loadhamlib = new LoadHamlib;
loadhamlib->load();
exec();
}
LoadHamlibThread::LoadHamlibThread(QObject *parent) :
QThread(parent)
{
}
void LoadHamlibThread::loadHamlib()
{
start();
}
void LoadHamlibThread::run()
{
LoadHamlib* loadhamlib = new LoadHamlib;
loadhamlib->load();
exec();
}
To copy to clipboard, switch view to plain text mode
the loadhamlib class emits the signal updateVal(val);
The loadhamlib code functions correctly - it loads a database successfully, but the progress bar update slot is never called. What do I have wrong here?
Bookmarks