プロジェクトで C++ と Qt を使用していますが、問題は QObject::connect 関数が信号をスロットに接続しないことです。私は次のクラスを持っています:
class AddCommentDialog : public QDialog
{
Q_OBJECT
public:
...some functions
signals:
void snippetAdded();
private slots:
void on_buttonEkle_clicked();
private:
Ui::AddCommentDialog *ui;
QString snippet;
};
私のメインウィンドウの一部:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void commentAddedSlot();
void variableAddedSlot();
...
private:
AddCommentDialog *addCommentDialog;
...
};
Ant 最後のダイアログ;
class AddDegiskenDialog : public QDialog
{
Q_OBJECT
public:
...
signals:
void variableAdded();
private slots:
void on_buttonEkle_clicked();
private:
Ui::AddDegiskenDialog *ui;
...
};
メイン ウィンドウ コンストラクターで、シグナルとスロットを接続します。
addCommentDialog=new AddCommentDialog();
addDegiskenDialog=new AddDegiskenDialog();
connect(addDegiskenDialog, SIGNAL(variableAdded()), this, SLOT(variableAddedSlot()));
connect(addCommentDialog, SIGNAL(snippetAdded()), this, SLOT(commentAddedSlot()));
ポイントは、私のcommentAddedSlotがそのシグナルに正常に接続されていることですが、commentAddedSlotは失敗しています。Q_OBJECT マクロがあり、x スロットがないなどの警告はありません。これに加えて、 receivers(SIGNAL(snippetAdded())) は 1 を返しますが、 receivers(SIGNAL(variableAdded())) は 0 を返し、コマンド qmake -project; を使用しました。qmake と make を使用して完全にコンパイルします。私は何が欠けていますか?