QObject :: connect не подключающий сигнал к слоту

Я использую 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;
...
};

Муравей последний диалог;

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-слота. В дополнение к этому,
Получатели (SIGNAL (snippetAdded ())) дают мне 1, но приемники (SIGNAL (variableAdded ())) дают мне 0, и я использовал команды qmake -project; qmake и make для полной компиляции.
Что мне не хватает?

4

Решение

Быстрый просмотр вашего кода не дает никаких идей, в чем ваша проблема.

Но вот несколько моментов:

  1. Как сказал майк Вот: При проблемах с подключением всегда проверяйте консоль на наличие сообщений об ошибках подключения. Поскольку Qt не может определить, имеет ли смысл соединение до времени выполнения, он уведомляет вас о сбоях. Вы могли бы подумать, что он потерпит крах, но он просто тихо говорит об этом в консоли.
    С Qt имеет смысл всегда смотреть консоль. Qt распечатывает все виды сообщений об ошибках, которые могут помочь, когда у вас возникла проблема.
  2. Вы можете контролировать результат connect функция, так (из официальной документации)

    Функция возвращает истину, если она успешно подключает сигнал к
    слот. Он вернет false, если не может создать соединение, для
    Например, если QObject не может проверить наличие какого-либо сигнала
    или метод, или если их подписи не совместимы.

  3. Проверьте, хорошо ли создаются ваши объекты (диалоги) и указатели не равны NULL,

  4. Попробуйте очистить ваш проект (команда «Очистить проект» в QtCreator), даже вручную удалить все ui_*, moc_*, И затем перекомпилируйте это.

Удачи! И, пожалуйста, оставьте свой отзыв.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]