Я использую 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 для полной компиляции.
Что мне не хватает?
Быстрый просмотр вашего кода не дает никаких идей, в чем ваша проблема.
Но вот несколько моментов:
Вы можете контролировать результат connect
функция, так (из официальной документации)
Функция возвращает истину, если она успешно подключает сигнал к
слот. Он вернет false, если не может создать соединение, для
Например, если QObject не может проверить наличие какого-либо сигнала
или метод, или если их подписи не совместимы.
Проверьте, хорошо ли создаются ваши объекты (диалоги) и указатели не равны NULL
,
ui_*
, moc_*
, И затем перекомпилируйте это.Удачи! И, пожалуйста, оставьте свой отзыв.
Других решений пока нет …