Название: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 11, 2014, 19:46 Код: QObject::connect(ui->pushButton, SIGNAL(clicked()), ui->lineEdit, SLOT(setText("123"))); Добавил на форму два элемента, пытаюсь их связать вот этой строчкой, компилируется, но при нажатии на кнопке в текстовое поле не вводится значение "123". Вообще ничего не происходит. Название: Re: Не связывается сигнал с слотом Отправлено: gil9red от Декабрь 11, 2014, 20:00 Код: QObject::connect(ui->pushButton, SIGNAL(clicked()), ui->lineEdit, SLOT(setText("123"))); Добавил на форму два элемента, пытаюсь их связать вот этой строчкой, компилируется, но при нажатии на кнопке в текстовое поле не вводится значение "123". Вообще ничего не происходит. И правильно :) Коннект просто задает связь сигнал-слот, или сигнал-сигнал Напишите слот, в котором будете в lineEdit значение вставлять. т.е. прмерно так: Код: MainWindow::MainWindow(...) { Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 11, 2014, 21:08 Так это вроде стандартный слот элемента, он и так должен выполнятся
Название: Re: Не связывается сигнал с слотом Отправлено: Alex Custov от Декабрь 11, 2014, 21:51 Так это вроде стандартный слот элемента, он и так должен выполнятся Не должен. Читай http://qt-project.org/doc/qt-4.8/signalsandslots.html Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 11, 2014, 22:46 Так это вроде стандартный слот элемента, он и так должен выполнятся Не должен. Читай http://qt-project.org/doc/qt-4.8/signalsandslots.html Я читал. И в переводе. Это же выполняется, это слот вроде, почему я должен его переписывать: ui->lineEdit->setText("123"); Название: Re: Не связывается сигнал с слотом Отправлено: Bepec от Декабрь 11, 2014, 23:18 Слот имеет у себя только те данные, которые пришли с сигналом. Типы данных, их порядок в сигнале должен соответствовать слоту, иначе просто не будет соединения.
Если у сигнала есть данные, а у слота нет, то они игнорируются. А в вашем случае имеет место нарушение этого условия :) Название: Re: Не связывается сигнал с слотом Отправлено: Alex Custov от Декабрь 11, 2014, 23:44 Это же выполняется, это слот вроде, почему я должен его переписывать: ui->lineEdit->setText("123"); если ты хочешь использовать код прямо в connect(), то используй C++-11 вариант connect с лямбдами (http://qt-project.org/wiki/New_Signal_Slot_Syntax), иначе соединение работать не будет. Потому что SLOT() не выполняет никакого кода. Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 12, 2014, 01:13 Это же выполняется, это слот вроде, почему я должен его переписывать: ui->lineEdit->setText("123"); если ты хочешь использовать код прямо в connect(), то используй C++-11 вариант connect с лямбдами (http://qt-project.org/wiki/New_Signal_Slot_Syntax), иначе соединение работать не будет. Потому что SLOT() не выполняет никакого кода. я же не выполняю код прямо,я лишь говрю, что надо вызвать слот setText, у экземпляра lineEdit класса, с параметром "123" В случае нажатия кнопки pushButton. Почему это не верно. Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 12, 2014, 01:14 Слот имеет у себя только те данные, которые пришли с сигналом. Типы данных, их порядок в сигнале должен соответствовать слоту, иначе просто не будет соединения. Если у сигнала есть данные, а у слота нет, то они игнорируются. А в вашем случае имеет место нарушение этого условия :) Игнорируется кем? Если я захочу связать сигнал с кнопки на слот собственного класса и в нем ужже поменять значение поля, так будет работтаь? Я не укажу никаких параметров. Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 12, 2014, 01:27 Ох еще одна напасть новичка, добавил в проект пустой свой класс, тепреь пытаюсь создать экземпляр что я делаю не правльно?
Код: cUpdateProgram *UpdateProgram; Ошибку выдает вообще какуюто левую mainwindow.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: __cdecl cUpdateProgram::cUpdateProgram(class QObject *)" (??0cUpdateProgram@@QEAA@PEAVQObject@@@Z) в функции "public: __cdecl MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QEAA@PEAVQWidget@@@Z) коментишь строку Код: UpdateProgram = new cUpdateProgram; все ок, что тут не так Код: #ifndef CUPDATEPROGRAM_H Код: #include "cupdateprogram.h" Название: Re: Не связывается сигнал с слотом Отправлено: Alex Custov от Декабрь 12, 2014, 01:54 я же не выполняю код прямо Это конструкцией выполняешь, а вернее пытаешься выполнять. В старом типе connect() это невозможно, просто из-за ограничений С++ и того, что старый connect() для этого не предназначен. Название: Re: Не связывается сигнал с слотом Отправлено: kambala от Декабрь 12, 2014, 12:40 попробуй qmake запустить перед сборкой
Название: Re: Не связывается сигнал с слотом Отправлено: Zilibobas от Декабрь 12, 2014, 13:28 Название: Re: Не связывается сигнал с слотом Отправлено: kambala от Декабрь 12, 2014, 21:03 в креаторе Build - Run qmake. ну или просто перестрой проект (там же Rebuild All)
|