Название: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 06:42 вот как реализован код:
Код: //GraphView.h меню появляется, но при выборе пункта меню ничего не происходит соединение не устанавливаается почемуто... connect(m_RemarkAction, SIGNAL(trig... в чем может быть дело? Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: PimenS от Июнь 01, 2016, 07:21 Цитировать if(connect(m_RemarkAction, SIGNAL(triggered()), this, SLOT(setRemark()))) Разве connect что-то возвращает? Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: gil9red от Июнь 01, 2016, 07:30 Цитировать if(connect(m_RemarkAction, SIGNAL(triggered()), this, SLOT(setRemark()))) Разве connect что-то возвращает? Цитировать bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static] Создает соединение заданного типа type между сигналом signal объекта-отправителя sender и методом method в объекте-приёмнике receiver. Возвращает true, если соединение удалось; в противном случае возвращает false. PimenS, по коду вроде бы ошибок нет Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: PimenS от Июнь 01, 2016, 07:54 Не знал. Да видно еще и забыл. :)
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: Bepec от Июнь 01, 2016, 08:54 Мб потому что есть сигнал
Код: triggered (bool) Код: triggered () В коннекте должны быть указаны все параметры сигнала и слота. PS и смотрите лог сборки - moc вас 100% наругал за несуществующий сигнал. Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 09:14 указывал и так и так в разных вариантах - тоже самое
Код: connect(m_RemarkAction, SIGNAL(triggered(QAction *)), this, SLOT(setRemark(QAction *))) гдетто видел что это is the same никто меня не ругал все ок Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: gil9red от Июнь 01, 2016, 09:26 Попробуйте:
Код
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 09:40 пробовал и так тоже - нет коннекта даже
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: Bepec от Июнь 01, 2016, 09:48 1) Не страдайте эм... фигней, читайте вывод сборки. Там всё напишет - какие сигналы не соответствуют, какие слоты отсутствуют.
2) предоставьте ПОЛНЫЙ код, а не жалкие огрызки. Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 09:54 1>------ Rebuild All started: Project: project, Configuration: Release Win32 ------
1> GraphView.cpp 1> main.cpp 1> MainWindow.cpp 1>MainWindow.cpp(158): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h(311) : see declaration of 'sscanf' 1> moc_GraphView.cpp 1> moc_MainWindow.cpp 1> Mutex.cpp 1> Generating code 1> Finished generating code 1> proj.vcxproj -> D:\Release\proj.exe ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== http://doc.qt.io/qt-4.8/signalsandslots.html (http://doc.qt.io/qt-4.8/signalsandslots.html) All of these would work: Код: connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*))); But this one won't work: Код: connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*))); Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: Bepec от Июнь 01, 2016, 09:56 Ещё проблему нашли.
Связывать сигнал можно со слотами, имеющими меньшее количество параметров. Но нельзя связывать сигнал со слотом, если у сигнала меньшее количество параметров. Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: GreatSnake от Июнь 01, 2016, 11:07 Код: //Показ меню в GraphView::setRemark() описан как Q_SLOT ? Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: kai666_73 от Июнь 01, 2016, 11:21 Если connect не валиден, то увидеть это можно только в рантайм выхлопе: что-то вроде
No such SIGNAL|SLOT... Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: kambala от Июнь 01, 2016, 11:44 Мб потому что есть сигнал параметры, имеющие значения по умолчанию, можно игнорироватьКод: triggered (bool) Код: triggered () В коннекте должны быть указаны все параметры сигнала и слота. Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: Bepec от Июнь 01, 2016, 11:48 Тут хз, в 4.7 дало бы отлуп. 4.8 не пробовал :)
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: kambala от Июнь 01, 2016, 11:52 работало и до 4.7. ты реально пробовал или тебе просто так кажется? :)
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 11:59 Показ меню в paintEvent() это просто жесть. Такого здесь ещё не видел. GraphView::setRemark() описан как Q_SLOT ? да это бог с ним, я накидываю как понимаю, c qt разбираюсь неделю всего, ковыряю чужую программу, а это сами знаете а с с++ две недели GraphView.h Код: public slots: Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: Bepec от Июнь 01, 2016, 12:00 4.7.2 пробовал. Он плевался в рантаймен отсутствием сигнала :)
Название: Re: Qt 4.8.6 - QMenu показывается, но не срабатывает ( Отправлено: UVD от Июнь 01, 2016, 12:45 весь код программы находится здесь: https://github.com/rcg17/uvdg-qt (https://github.com/rcg17/uvdg-qt)
|