QEventLoop отбрасывает некоторый сигнал
У меня есть вопрос о QEventLoop: как установить QEventLoop для отбрасывания некоторого сигнала
class MyThread : public QThread
{
Dialog *_dlg;
public:
MyThread(Dialog* dlg)
: _dlg(dlg)
{
}
virtual void run()
{
QTimer* _timer;
_timer = new QTimer(this);
connect(_timer, SIGNAL(timeout()),
_dlg, SLOT(timeout()), Qt::BlockingQueuedConnection);
_timer->start(3000);
QEventLoop loop;
loop.exec(QEventLoop::WaitForMoreEvents);
}
};
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()),
this, SLOT(click()));
MyThread* thread = new MyThread(this);
thread->start();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::click()
{
QMessageBox msgBox(this);
msgBox.setText("click.");
msgBox.exec();
}
void Dialog::timeout()
{
QMessageBox msgBox(this);
msgBox.setText("timeout.");
msgBox.exec();
}
это мой код при запуске этой программы, каждые 5 секунд будет отображаться тайм-аут QMessageBox. но я хочу, если я нажму кнопку, то покажу окно сообщения о клике и не покажу окно сообщения о тайм-ауте.. я не смог найти какой-либо способ сделать это