Подключение сигнала QGraphicsview к слоту пользовательского интерфейса

Я новичок в QT и C++, и у меня есть старый код qt-C++, который я не могу заставить работать. Вероятно, это что-то о времени жизни вызывающих объектов, но эй, но, пожалуйста, скажите мне, что мне не хватает.

В QT .ui у меня есть различные фреймы и виджеты, содержащие фреймы и виджеты, содержащие QVBoxLayout который мы будем называть "myLayout"

При нажатии на файл.ui я использую

myWidget = new mywidget(some params);
myLayout->addWidget(myWidget);

где myWidget объявлен как mywidget *myWidget; в заголовочном файле

мой виджет QWidget который внутренне добавляет QVBoxLayout к себе и добавляет QGraphicsView, С использованием MouseReleaseEvent Я излучаю сигнал от QWidget.

теперь, когда я пытаюсь подключить слот сигнала (что я делаю в файле cpp из пользовательского интерфейса)

connect(myWidget, SIGNAL(mySignal(QString)), this, SLOT(mySlot(QString)));

сигналы никогда не ловят слот. слот общедоступен, сигнал отсутствует.

Что я сделал не так? Может ли кто-нибудь помочь. Не стесняйтесь задавать дополнительные вопросы, так как я действительно не знаю, что важно в вопросах C++;)

редактировать: сигнал излучается QGraphicsObjects которые сами подключаются к слоту в QGraphicsView, Этот слот называется и отлаживается. в конце рутины emit mySignal("..."); называется.

1 ответ

Решение

Может быть, вы забыли добавить Q_OBJECT макрос в объявлении вашего виджета. Документация Qt: http://doc.qt.io/qt-5/qobject.html

Другие вопросы по тегам