Avoid QTimer::singleShot compile error with Qt 5.3.2

Construct QTimer object directly, instead of relying on QTimer::singleShot
overloads accepting lambdas, which weren't introduced until Qt 5.4.

Avoids the following compile error in debian jessie:

```
qt/test/wallettests.cpp: In function ‘void {anonymous}::ConfirmSend()’:
qt/test/wallettests.cpp:34:6: error: no matching function for call to ‘QTimer::singleShot(int, Qt::TimerType, {anonymous}::ConfirmSend()::<lambda()>)’
     });
      ^
qt/test/wallettests.cpp:34:6: note: candidates are:
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QTimer:1:0,
                 from ./qt/sendcoinsdialog.h:13,
                 from qt/test/wallettests.cpp:7:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note: static void QTimer::singleShot(int, const QObject*, const char*)
     static void singleShot(int msec, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note:   no known conversion for argument 2 from ‘Qt::TimerType’ to ‘const QObject*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note: static void QTimer::singleShot(int, Qt::TimerType, const QObject*, const char*)
     static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note:   candidate expects 4 arguments, 3 provided
```

Error reported by Pavel Janík <Pavel@Janik.cz> in
https://github.com/bitcoin/bitcoin/pull/9974#issuecomment-287574436
pull/10039/head
Russell Yanofsky 8 years ago
parent d5046e72f4
commit b5bec4e330

@ -22,7 +22,9 @@ namespace
//! Press "Yes" button in modal send confirmation dialog. //! Press "Yes" button in modal send confirmation dialog.
void ConfirmSend() void ConfirmSend()
{ {
QTimer::singleShot(0, Qt::PreciseTimer, []() { QTimer* timer = new QTimer;
timer->setSingleShot(true);
QObject::connect(timer, &QTimer::timeout, []() {
for (QWidget* widget : QApplication::topLevelWidgets()) { for (QWidget* widget : QApplication::topLevelWidgets()) {
if (widget->inherits("SendConfirmationDialog")) { if (widget->inherits("SendConfirmationDialog")) {
SendConfirmationDialog* dialog = qobject_cast<SendConfirmationDialog*>(widget); SendConfirmationDialog* dialog = qobject_cast<SendConfirmationDialog*>(widget);
@ -32,6 +34,7 @@ void ConfirmSend()
} }
} }
}); });
timer->start(0);
} }
//! Send coins to address and return txid. //! Send coins to address and return txid.

Loading…
Cancel
Save