2017-07-09 11 views
0

QTボタンを押しても非常に時間がかかる操作をしたいのに、失敗した場合は誰でも私に説明してもらえますか?ありがとう! コードは次のとおりです。 QT QPushButton Pressイベント

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(); 
    } 
} 

iは、新しいスレッドに2つのポインタを渡す必要がありますか?

答えて

0

QPushButtonクリック信号を使用できます。

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

eventFilterを使用する必要はありません。あなたがそれを忘れないで使用したい場合は、忘れないでくださいinstallEventFilter

+0

ありがとうございますが、どちらもうまく動作しません。メインスレッドのポインタを新しいQThreadに渡すことはできますか? – redips

+0

@redips信号とスロットを使ってあるスレッドから別のスレッドにデータを渡すことができます。 – aghilpro

関連する問題