C++ QT QPushButton按下事件

C++ QT QPushButton按下事件,c++,qt,events,C++,Qt,Events,当按下QT按钮但失败时,我想做一个非常耗时的操作,有人能帮我解释一下吗?谢谢 代码是: bool eventFilter(QObject *target, QEvent *event) { if (target == ui.zoominBtn){ if (event->type() == QEvent::MouseButtonPress){ phcs[curPhcId].zoom(0.1); renderRayt

当按下QT按钮但失败时,我想做一个非常耗时的操作,有人能帮我解释一下吗?谢谢 代码是:

bool eventFilter(QObject *target, QEvent *event)
{
    if (target == ui.zoominBtn){
         if (event->type() == QEvent::MouseButtonPress){
             phcs[curPhcId].zoom(0.1);
             renderRaytracingImage();
         }
    }
    return QMainWindow::eventFilter(target, event);
}
现在,我将耗时部分移到QThread:

if (target == ui.zoominBtn){
    if (event->type() == QEvent::MouseButtonPress){
        //phcs[curPhcId].zoom(0.1);
        TracerayThread *traceThread = new TracerayThread(&scene,&(phcs[curPhcId]),this);
        connect(traceThread, SIGNAL(resultReady()), this, SLOT(render()));
        connect(traceThread, SIGNAL(finished()), traceThread, SLOT(deleteLater()));
        traceThread->start();
    }
}

我需要向新线程传递两个指针,可以这样做吗

您可以使用QPushButton点击信号

connect(YourButtonName,  &QPushButton::clicked, this, &MainWindow::YourSlotName);

不需要使用eventFilter。如果您想使用它,请不要忘记
installEventFilter

谢谢,但它也不起作用。我使用了一个新线程来完成这项工作,但什么也没有得到。我可以将主线程中的指针传递到新的QThread吗?@redips您可以使用信号和插槽将数据从一个线程传递到另一个线程。