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. но я хочу, если я нажму кнопку, то покажу окно сообщения о клике и не покажу окно сообщения о тайм-ауте.. я не смог найти какой-либо способ сделать это

введите описание изображения здесь

0 ответов

Другие вопросы по тегам