當我嘗試使用舊的信號/插槽機制進行連接時,它工作正常,但它給了我一個使用新的編譯錯誤:使用新的Qt5信號/插槽機制連接QTcpSocket :: error()時編譯錯誤
// Old mechanism, this works:
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
// Compile error when using the template version:
connect(socket, &QTcpSocket::error, this, &MainWindow::onError);
這是我的錯誤:
error: no matching function for call to 'MainWindow::connect(QTcpSocket*&, , MainWindow*, void (MainWindow::*)(QAbstractSocket::SocketError))' connect(socket, &QTcpSocket::error, this, &MainWindow::onError); ^
我插槽功能:
class MainWindow : public QMainWindow
{
Q_OBJECT
private slots:
void onError(QAbstractSocket::SocketError);
我發現了一個similar thread on Qt forums,他們說這是在Qt的一個錯誤,但會由5.1修正。我的版本是5.4.2,但是(使用MinGW)。
那麼這是一個真正的Qt錯誤,還是我的語法錯了?
參見http://doc.qt.io/qt-5/signalsandslots-syntaxes.html#selecting-overloaded-signals-and-slots – JKSH