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:
Qt Code:
  1. HamlibNotice::HamlibNotice(QWidget *parent) :
  2. QDialog(parent),
  3. ui(new Ui::HamlibNotice)
  4. {
  5. ui->setupUi(this);
  6. ui->progressBar->setValue(0);
  7.  
  8. connect(&load, SIGNAL(updateVal(int)), this, SLOT(updatePB(int)));
  9.  
  10. LoadHamlibThread* hamlibThread = new LoadHamlibThread;
  11. connect(hamlibThread, SIGNAL(finished()), this, SLOT(closeNotice()));
  12. hamlibThread->loadHamlib();
  13. }
  14.  
  15. HamlibNotice::~HamlibNotice()
  16. {
  17. delete ui;
  18. }
  19.  
  20. void HamlibNotice::updatePB(int val)
  21. {
  22. qDebug() << "in pb slot";
  23. ui->progressBar->setValue(val);
  24. }
  25.  
  26. void HamlibNotice::closeNotice()
  27. {
  28. HamlibNotice::close();
  29. }
To copy to clipboard, switch view to plain text mode 

The thread:
Qt Code:
  1. LoadHamlibThread::LoadHamlibThread(QObject *parent) :
  2. QThread(parent)
  3. {
  4. }
  5.  
  6. void LoadHamlibThread::loadHamlib()
  7. {
  8. start();
  9. }
  10.  
  11. void LoadHamlibThread::run()
  12. {
  13. LoadHamlib* loadhamlib = new LoadHamlib;
  14. loadhamlib->load();
  15. exec();
  16. }
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?