1. ホーム
  2. qt

Qt: (クラス名)::connect()への呼び出しに一致する関数がない エラー概要

2022-02-12 22:38:56


最近初めてQtを勉強したのですが、E:୧✂QT ProjectWinCalculater✂mainwindow.cpp:132: error: no matching function for call to 'MainWindow::connect(MyButton*&, void (MyButton::*)(), MainWindow* const, const char*)' 問題が発生して、原因をググったけど答えが出てこず、自分で見つけたのでここに共有することにしました。

エラーコードです。

connect(but0,&MyButton::clicked,this,SLOT(button1()));


エラーの原因

これは、connect()の5つのオーバーロードされた関数の引数の要件を満たしていないため、引数リストに何か問題があることを意味します。

<スパン Qt 5 では QObject::connect() には5つのオーバーロードがあります。

QMetaObject::Connection connect(const QObject *, const char *,
                                const QObject *, const char *,
                                Qt::ConnectionType);
 
QMetaObject::Connection connect(const QObject *, const QMetaMethod &,
                                const QObject *, const QMetaMethod &,
                                Qt::ConnectionType);
 
QMetaObject::Connection connect(const QObject *, const char *,
                                const char *,
                                Qt::ConnectionType) const;
 
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
                                const QObject *, PointerToMemberFunction,
                                Qt::ConnectionType)
 
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
                                Functor);





私の間違いは、1番目と4番目のオーバーロードされた関数を混ぜてしまったことです:シグナル &です。 マイボタン :: clicked は PointerToMemberFunction 型のスロット関数です。 スロット ( ボタン1 ()) は const char * 型であるため、エラーを報告します。

         私のbutton1()はprivate slots:のカスタム関数であるため、この関数に スロット <スパン ( ボタン1 ()) で置き換える & メインウィンドウ :: button1 は問題ありません。

<スパン