Подключение сигнала 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