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入門(18)——使用訊號和槽連線控制元件QT控制元件
- Qt訊號 lamda 表示式使用QT
- Qt 自動連線機制訊號與槽QT
- Qt學習第三篇(訊號槽函式的連線)QT函式
- 《Qt5:訊號和槽使用示例》QT
- Qt5的訊號和槽函式QT函式
- 02_QT訊號和槽QT
- Qt入門(3)——訊號和槽QT
- Qt之訊號與槽QT
- Qt Connect 訊號 槽QT
- QT槽函式獲取訊號傳送物件QT函式物件
- Qt 5 中的訊號槽QT
- C++ Qt開發:如何使用訊號與槽C++QT
- PyQT5訊號與槽的連線QT
- Qt 訊號槽傳遞指標QT指標
- Java lambda表示式基本使用Java
- Qt訊號與槽使用方法最完整總結QT
- Qt自定義訊號槽的使用淺析+例項QT
- Qt 訊號槽如何傳遞引數(或帶引數的訊號槽)QT
- QT 控制檯訊號與槽簡例QT
- kotlin 函式和 Lambda 表示式Kotlin函式
- 5.函式和lambda表示式函式
- lambda 表示式
- lambda表示式
- C#中的Lambda表示式和表示式樹C#
- QT從入門到入土(三)——訊號和槽機制QT
- Java中Lambda表示式的使用Java
- 如何利用 C++ 的 Lambda 表示式提升 Qt 程式碼C++QT
- QT學習筆記1(安裝、建立和訊號與槽)QT筆記
- Java | Lambda表示式Java
- Lambda表示式(Java)Java
- java lambda 表示式Java
- 八,Lambda表示式
- Java Lambda表示式Java
- .NET委託,事件和Lambda表示式事件
- Java 8 流特性和 Lambda 表示式Java
- C++ Lambda 表示式使用詳解C++
- [轉]Java 8 的 lambda 表示式 Java 8 的 lambda 表示式Java