Qt 5中使用lambda表示式連線訊號和槽
直接上例子:
QProcess* process = new QProcess;
process->setProgram("cmd");
QStringList argument;
argument<<"/c"<< QString::fromStdString(strCmd);
process->setArguments(argument);
qDebug() << "argument:" << argument;
QObject::connect(process, &QProcess::finished),this,[this](int){
std::cout << "process finished." << std::endl;
});
錯誤提示:
error: C2664: “QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const”
: 無法將引數 2 從“overloaded-function”
問題分析:
Q_SIGNALS:
void started(QPrivateSignal);
#if QT_DEPRECATED_SINCE(5, 13)
QT_DEPRECATED_X("Use QProcess::finished(int, QProcess::ExitStatus) instead")
void finished(int exitCode); // ### Qt 6: merge the two signals with a default value
#endif
void finished(int exitCode, QProcess::ExitStatus exitStatus);
// 以上為原始碼部分,我們可以看到finished訊號是有過載的,存在兩個同名函式
解決方法如下:
QProcess* process = new QProcess;
process->setProgram("cmd");
QStringList argument;
argument<<"/c"<< QString::fromStdString(strCmd);
process->setArguments(argument);
qDebug() << "argument:" << argument;
QObject::connect(process, static_cast<void(QProcess::*)(int)>(&QProcess::finished),this,[this](int){
std::cout << "process finished." << std::endl;
});
相關文章
- Qt訊號 lamda 表示式使用QT
- Qt 自動連線機制訊號與槽QT
- Qt學習第三篇(訊號槽函式的連線)QT函式
- 《Qt5:訊號和槽使用示例》QT
- Qt5的訊號和槽函式QT函式
- 02_QT訊號和槽QT
- Qt之訊號與槽QT
- QT槽函式獲取訊號傳送物件QT函式物件
- C++ Qt開發:如何使用訊號與槽C++QT
- kotlin 函式和 Lambda 表示式Kotlin函式
- lambda 表示式使用的方式
- Java lambda表示式基本使用Java
- PyQT5訊號與槽的連線QT
- Qt 訊號槽傳遞指標QT指標
- Qt訊號與槽使用方法最完整總結QT
- Qt自定義訊號槽的使用淺析+例項QT
- 5.函式和lambda表示式函式
- lambda 表示式
- lambda表示式
- Java中Lambda表示式的使用Java
- QT 控制檯訊號與槽簡例QT
- QT從入門到入土(三)——訊號和槽機制QT
- 【Python】python map()函式和lambda表示式Python函式
- QT學習筆記1(安裝、建立和訊號與槽)QT筆記
- 在Android Studio中使用Lambda表示式Android
- .NET委託,事件和Lambda表示式事件
- Java | Lambda表示式Java
- 【Kotlin】Lambda表示式Kotlin
- CPP lambda表示式
- 八,Lambda表示式
- Python Lambda 表示式Python
- Lambda表示式(Java)Java
- Java Lambda表示式Java
- Python - lambda 表示式Python
- kotlin lambda表示式Kotlin
- C# Lambda表示式詳解,及Lambda表示式樹的建立C#
- Qt - 訊號與槽的第五個引數QT
- Java中使用lambda表示式自定義排序Java排序