Название: Connect не работает Отправлено: Medved от Август 01, 2022, 15:01 Кто-нибудь сможет объяснить почему вот так работает:
Код: // pMainMenu = new QMenuBar() ... а вот так НЕ работает? Код: // pMainMenu = new QMenuBar() внутри метода connect MOC не может найти сигнал во втором случае. Название: Re: Connect не работает Отправлено: vbv от Август 01, 2022, 17:13 Все дело в параметрах.
В сигнале и слоте не совпадают параметры. Название: Re: Connect не работает Отправлено: Medved от Август 01, 2022, 18:26 Все дело в параметрах. В сигнале и слоте не совпадают параметры. Код: connect(pAction, SIGNAL(pAction->triggered(bool)), this, SLOT(openMyWindow(bool))); также не работает... не может найти сигнал triggered по какой-то причине. Название: Re: Connect не работает Отправлено: ssoft от Август 01, 2022, 18:30 Код: connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow())); Название: Re: Connect не работает Отправлено: vbv от Август 01, 2022, 20:11 Код: connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow())); Точно, не досмотрел. Название: Re: Connect не работает Отправлено: Medved от Август 02, 2022, 12:20 Код: connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow())); не работает... Код: connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow(bool))); Название: Re: Connect не работает Отправлено: Medved от Август 02, 2022, 12:49 альтернативный метод connect работает, а вот обычный нет. по какой-то причине MOC не может найти сигнал для моего QAction и вылетает с ошибкой
Код: QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, Qt 6.3.1, в отладке. QAction pAction = new QAction("text",0); Название: Re: Connect не работает Отправлено: kambala от Август 02, 2022, 13:45 всё работает нормально и со старым синтаксисом тоже. может ты забыл добавить параметр bool в свой метод openMyWindow?
Код
Название: Re: Connect не работает Отправлено: Medved от Август 02, 2022, 15:34 всё работает нормально и со старым синтаксисом тоже. может ты забыл добавить параметр bool в свой метод openMyWindow? Код
нет, не забыл. я же привел пример кода. при чем в других местах программы стандартный connect работает как надо. наверное какая-то проблема либо в самом QAction либо что-то сломалось в мета компиляторе Название: Re: Connect не работает Отправлено: kambala от Август 02, 2022, 15:52 я не вижу куска кода, в котором было бы видно объявление этого метода.
попробуй снести папку сборки и построить снова, также посмотри что там MOC генерирует. еще можешь поискать аналогичные багрепорты на https://bugreports.qt.io/ если бы была проблема, она бы наверное проявлялась на всех платформах. Название: Re: Connect не работает Отправлено: Medved от Август 03, 2022, 09:51 я не вижу куска кода, в котором было бы видно объявление этого метода. попробуй снести папку сборки и построить снова, также посмотри что там MOC генерирует. еще можешь поискать аналогичные багрепорты на https://bugreports.qt.io/ если бы была проблема, она бы наверное проявлялась на всех платформах. уже пробовал. я перепробовал наверное всё, что только возможно прежде чем придти на этот форум. вот кусок кода Код: MainMenu::MainMenu(QWidget* pMainWindow): QMenuBar(pMainWindow) Название: Re: Connect не работает Отправлено: kambala от Август 03, 2022, 12:01 ну вот так бы сразу. теперь ошибка очевидна :)
у тебя создан pAction в объекте pMainMenu, а ты пытаешься законнектить pAction из MainWindow, под который не выделена память. правильно будет: Код
Название: Re: Connect не работает Отправлено: Medved от Август 03, 2022, 14:41 ну вот так бы сразу. теперь ошибка очевидна :) у тебя создан pAction в объекте pMainMenu, а ты пытаешься законнектить pAction из MainWindow, под который не выделена память. правильно будет: Код
ну я так и делаю, см. код в самом начале ветки. в MainWindow я создаю pMainMenu и получаю pAction из этого pMainMenu Название: Re: Connect не работает Отправлено: sergek от Август 03, 2022, 14:54 При использовании старой нотации connect слоты необходимо объявлять явно, например в секции public slots. Думаю, в этом причина.
Для новой, с использованием указателей на функции, этого не требуется. Название: Re: Connect не работает Отправлено: sergek от Август 03, 2022, 14:57 Все дело в параметрах. В старой нотации в слотах могут не использоваться параметры сигналов.В сигнале и слоте не совпадают параметры. Название: Re: Connect не работает Отправлено: Medved от Август 03, 2022, 17:27 При использовании старой нотации connect слоты необходимо объявлять явно, например в секции public slots. Думаю, в этом причина. Для новой, с использованием указателей на функции, этого не требуется. тему можно закрыть. в тестовом приложении все работает. в оригинальной программе этот же код не работает. пока что отличий не нашел... Название: Re: Connect не работает Отправлено: sergek от Август 03, 2022, 19:11 тему можно закрыть. Закрывальщики все уехали за бугор ;) Такое ощущение, что человек банально забыл сделать qmake((Название: Re: Connect не работает Отправлено: Medved от Август 04, 2022, 09:15 тему можно закрыть. Закрывальщики все уехали за бугор ;) Такое ощущение, что человек банально забыл сделать qmake((я не использую qmake. тулчейн QT легко интегрируется в MSVS Название: Re: Connect не работает Отправлено: kambala от Август 04, 2022, 10:04 если полная очистка и пересборка проекта не помогает, значит проблема в коде. пока не выложишь минимальный компилируемый пример, в котором воспроизводится ошибка, помочь никто не сможет.
|