gpt4 book ai didi

qt - 将 lambda 函数连接到 QProcess::error 时出错

转载 作者:行者123 更新时间:2023-12-04 13:24:35 24 4
gpt4 key购买 nike

在下面的代码中,我想将 lambda 函数连接到 QProcess::error 信号:

void Updater::start() {
QProcess process;
QObject::connect(&process, &QProcess::error, [=] (QProcess::ProcessError error) {
qWarning() << "error " << error;
});
process.start("MyProgram");
process.waitForFinished();
}

但我收到奇怪的错误:

error: no matching function for call to 'Updater::connect(QProcess* [unresolved overloaded function type], Updater::start()::)' });



我在这里做错了什么?代码在从 QObject 派生的类的方法内部执行。该项目配置为使用 c++11。

我在带有 gcc 4.9.2 的 Linux x32 上使用 Qt 5.3.1

最佳答案

问题是QProcess还有一个 error() 方法,所以编译器只是不知道使用哪个方法。如果你想处理重载的方法,你应该使用 next:

QProcess process;
connect(&process, static_cast<void (QProcess::*)(QProcess::ProcessError)>
(&QProcess::error), [=](QProcess::ProcessError pError) {
qWarning() << "error " << pError;
});
process.start("MyProgram");
process.waitForFinished();

是的,它看起来很丑,但没有其他方法(只有旧语法?)。

这个特殊的行告诉编译器你想使用 void QProcess::error(QProcess::ProcessError error) ,所以现在没有任何歧义

More information you can find here .

关于qt - 将 lambda 函数连接到 QProcess::error 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com