在Qt 5.9中,我試圖用C++關鍵字代替SLOT。這是可能的(沒有一個單獨的方法)?在連接信號/插槽中使用C++關鍵字
喜歡的東西:
QObject::connect(&timer, SIGNAL(timeout()), this, (delete image_ptr));
這是行不通的,我下面的代碼示例:連接樣品中
QImage *image_ptr = new QImage(3, 3, QImage::Format_Indexed8);
QEventLoop evt;
QFutureWatcher<QString> watcher;
QTimer timer(this);
timer.setSingleShot(true);
QObject::connect(&watcher, &QFutureWatcher<QString>::finished, &evt, &QEventLoop::quit);
QObject::connect(&timer, SIGNAL(timeout()), &watcher, SLOT(cancel()));
QObject::connect(&timer, SIGNAL(timeout()), &evt, SLOT(quit));
QObject::connect(&timer, SIGNAL(timeout()), this, (delete image_ptr));
QFuture<QString> future = QtConcurrent::run(this,&myClass::myMethod,*image_ptr);
watcher.setFuture(future);
timer.start(100);
evt.exec();
使用拉姆達。 https://artandlogic.com/2013/09/qt-5-and-c11-lambdas-are-your-friend/ – drescherjm
雖然說這看起來很危險。我的意思是如果併發執行仍在運行,你釋放圖像壞事會發生.. – drescherjm