我有一个关于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。 但我想如果我按下按钮然后显示单击消息框,并不显示超时消息框.. 我没有找到任何方法来做到这一点