[Interest] QProcess overload slot connection

Jason H jhihn at gmx.com
Wed Mar 13 20:02:14 CET 2019


void waitForProcessFinished(QProcess *process, const QString &command, int timeout) {
	QTimer timer;
	QEventLoop loop;
	connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
	connect(process, &QProcess::finished, &loop, &QEventLoop::quit); // can't resolve &QProcess::finished

	if (timeout > 0 ) {
		timer.setSingleShot(true);
		timer.start(timeout);

	}
	process->start(command);
	loop.exec();
}


I can't seem to figure this out. There is code online that resolves it as above, but there is also code that uses qOverload() but I get:
use of undeclared identifier 'qOverload'

So you say that's only availible for C++14, ok I say:
connect(process, QOverload<>::of(&QProcess::finished), &loop, &QEventLoop::quit);

which then gives:
no matching function call to 'of'

QOverload<void> gives an error

This does not give an error, but is also wrong, I think:
connect(process, QOverload<int>::of(&QProcess::finished), &loop, &QEventLoop::quit); 


QEventLoop::quit slot does not take any parameters


What's the "right way" to connect QProcess::finished to QEventLoop::quit?


More information about the Interest mailing list