Название: Сигналы и слоты Отправлено: labview от Июль 30, 2010, 13:18 Всем привет!
Решил заняться межплатформенным программированием с использованием GUI на С++. Заинсталлировал Netbeans, g++ и QT. Надеюсь мой выбор инструментов для программирования был сделан правильно. Пока я работаю в винде, но собираюсь вечером заинсталлировать то же самое под линукс. И так, я сделал пару примерчиков с сайта QT и Netbeans. Возникли следующие вопросы по слотам и сигналам. Сигнал, насколько я понимаю это ивент (например нажатие на кнопку, изменение размера окна, изменение текста в текст-боксе и прочее). Этот сигнал можно соединить с каким нибудь экшеном другого элемента лицевой панели (например поменять его цвет или содержимое). И такое соединение называется слот. Я пока правильно понял? В QT дизайнере можно создавать такие соединения/слоты. Тут возникает такой вопрос, что если у меня сигнал должен просто вызывать какую нибудь функцию в моей программе, но не должен быть соединён с другим элементом лицевой панели? То есть мне просто нужен Callback. Как это организовать в QT дизайнере? Просто в поле Receiver мне нужно указывать получателя сигнала, а там на выбор только элементы лицевой панели и их функции. Спасибо и извините, если мои вопросы по-Вашему являются глупыми. С уважением, labview Название: Re: Сигналы и слоты Отправлено: JamS007 от Июль 30, 2010, 13:28 Вы все правильно поняли.
О создании слотов: Qt дизайнер по сути своей являетсяь проектировщиком форм, он не берет на себя функционал по созданио сторонних слотов. Рекомендую посмотреть в сторону QtCreator где все эти функции очень удобно интегрированы. О том как создать свой слот в QtCreator совсем недавно на форуме поднималась тема: http://www.prog.org.ru/topic_14379_0.html (http://www.prog.org.ru/topic_14379_0.html) Название: Re: Сигналы и слоты Отправлено: SimpleSunny от Июль 30, 2010, 13:33 Первое что стоит запомнить, так это:
"Qt - Qt Development Frameworks; QT - QuickTime" Название: Re: Сигналы и слоты Отправлено: labview от Июль 30, 2010, 13:42 Вы все правильно поняли. О создании слотов: Qt дизайнер по сути своей являетсяь проектировщиком форм, он не берет на себя функционал по созданио сторонних слотов. Рекомендую посмотреть в сторону QtCreator где все эти функции очень удобно интегрированы. О том как создать свой слот в QtCreator совсем недавно на форуме поднималась тема: http://www.prog.org.ru/topic_14379_0.html (http://www.prog.org.ru/topic_14379_0.html) Спасибо, попробую QtCreator. Цитировать Первое что стоит запомнить, так это: "Qt - Qt Development Frameworks; QT - QuickTime" Запомнил ;D Название: Re: Сигналы и слоты Отправлено: labview от Июль 30, 2010, 14:02 Пробую QtCreator.
Сделал окно, разместил кнопку выхода и два элемента LineEdit. В одном я хочу ввести имя, а в другом выдать сообщение "Hello имя!". Для этого создал слот, который обрабатывает сигнал textEdited(). Получателем назначил второй LineEdit, но в каком месте я могу обработать выдаваемое сообщение? Ещё раз сори за чайниковый вопрос. С уважением, labview. ЗЫ прочитал тему, на которую Вы далии линк выше и что нужно создавать слот по-другому. На этом спасибо. Теперь возник другой вопрос, но это уже другая тема. Название: Re: Сигналы и слоты Отправлено: crossly от Июль 30, 2010, 14:12 для этого нудно создать свой слот... и соединить его с сигналом.... в слоте обрабатываем что хотим и выводим во второй lineEdit
Название: Re: Сигналы и слоты Отправлено: SimpleSunny от Июль 30, 2010, 14:12 Такое необходимо делать в коде руками, т.е. создать слот и соединить его с сигналом textEdited().
В QtCreator выделите первый QLineEdit, нажмите ПКМ, выберете пункт перейти к слоту. QtCreator создаст слот с определленным именем, который будет автоматически связываться с выбранным сигналом. Можно соединять также и руками, используя connect, чтобы имена слотов былы более информативными. Название: Re: Сигналы и слоты Отправлено: labview от Июль 30, 2010, 14:13 Да, огромное спасибо, уже понял, отредактировал выше.
Название: Re: Сигналы и слоты Отправлено: lit-uriy от Июль 30, 2010, 15:47 >>И такое соединение называется слот.
категорически не верно. Соединение - это соединение. Слот - это целевая функция соединения. Далее, чтобы не было путаницы: Экшон, правильно Action, или Действие, имеет отдельный смысл в Qt. И он не является слотом. Сигнал, по смыслу, следует воспринимать буквально. Либо по аналогии с электричеством, в виде шнурка-источника. Слот - в виде разъёма-приёмника. А функцию QObject::connect, как операцию по вставке шнурка в разъём (это и есть соединение) Название: Re: Сигналы и слоты Отправлено: labview от Июль 30, 2010, 16:27 Спасибо, информации о коннекте мне как раз и не хватало.
|