Russian Qt Forum
Ноябрь 23, 2024, 10:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Сигналы и слоты
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сигналы и слоты (Прочитано 5900 раз)
labview
Гость
Сигналы и слоты
«
:
Июль 30, 2010, 13:18 »
Всем привет!
Решил заняться межплатформенным программированием с использованием GUI на С++. Заинсталлировал Netbeans, g++ и QT. Надеюсь мой выбор инструментов для программирования был сделан правильно.
Пока я работаю в винде, но собираюсь вечером заинсталлировать то же самое под линукс.
И так, я сделал пару примерчиков с сайта QT и Netbeans. Возникли следующие вопросы по слотам и сигналам.
Сигнал, насколько я понимаю это ивент (например нажатие на кнопку, изменение размера окна, изменение текста в текст-боксе и прочее). Этот сигнал можно соединить с каким нибудь экшеном другого элемента лицевой панели (например поменять его цвет или содержимое).
И такое соединение называется слот.
Я пока правильно понял?
В QT дизайнере можно создавать такие соединения/слоты. Тут возникает такой вопрос, что если у меня сигнал должен просто вызывать какую нибудь функцию в моей программе, но не должен быть соединён с другим элементом лицевой панели? То есть мне просто нужен Callback. Как это организовать в QT дизайнере? Просто в поле Receiver мне нужно указывать получателя сигнала, а там на выбор только элементы лицевой панели и их функции.
Спасибо и извините, если мои вопросы по-Вашему являются глупыми.
С уважением, labview
Записан
JamS007
Гость
Re: Сигналы и слоты
«
Ответ #1 :
Июль 30, 2010, 13:28 »
Вы все правильно поняли.
О создании слотов: Qt дизайнер по сути своей являетсяь проектировщиком форм, он не берет на себя функционал по созданио сторонних слотов. Рекомендую посмотреть в сторону QtCreator где все эти функции очень удобно интегрированы. О том как создать свой слот в QtCreator совсем недавно на форуме поднималась тема:
http://www.prog.org.ru/topic_14379_0.html
Записан
SimpleSunny
Гость
Re: Сигналы и слоты
«
Ответ #2 :
Июль 30, 2010, 13:33 »
Первое что стоит запомнить, так это:
"Qt - Qt Development Frameworks; QT - QuickTime"
Записан
labview
Гость
Re: Сигналы и слоты
«
Ответ #3 :
Июль 30, 2010, 13:42 »
Цитата: JamS007 от Июль 30, 2010, 13:28
Вы все правильно поняли.
О создании слотов: Qt дизайнер по сути своей являетсяь проектировщиком форм, он не берет на себя функционал по созданио сторонних слотов. Рекомендую посмотреть в сторону QtCreator где все эти функции очень удобно интегрированы. О том как создать свой слот в QtCreator совсем недавно на форуме поднималась тема:
http://www.prog.org.ru/topic_14379_0.html
Спасибо, попробую QtCreator.
Цитировать
Первое что стоит запомнить, так это:
"Qt - Qt Development Frameworks; QT - QuickTime"
Запомнил
Записан
labview
Гость
Re: Сигналы и слоты
«
Ответ #4 :
Июль 30, 2010, 14:02 »
Пробую QtCreator.
Сделал окно, разместил кнопку выхода и два элемента LineEdit. В одном я хочу ввести имя, а в другом выдать сообщение "Hello имя!".
Для этого создал слот, который обрабатывает сигнал textEdited(). Получателем назначил второй LineEdit, но в каком месте я могу обработать выдаваемое сообщение?
Ещё раз сори за чайниковый вопрос.
С уважением, labview.
ЗЫ прочитал тему, на которую Вы далии линк выше и что нужно создавать слот по-другому. На этом спасибо.
Теперь возник другой вопрос, но это уже другая тема.
«
Последнее редактирование: Июль 30, 2010, 14:12 от labview
»
Записан
crossly
Гость
Re: Сигналы и слоты
«
Ответ #5 :
Июль 30, 2010, 14:12 »
для этого нудно создать свой слот... и соединить его с сигналом.... в слоте обрабатываем что хотим и выводим во второй lineEdit
Записан
SimpleSunny
Гость
Re: Сигналы и слоты
«
Ответ #6 :
Июль 30, 2010, 14:12 »
Такое необходимо делать в коде руками, т.е. создать слот и соединить его с сигналом
textEdited()
.
В QtCreator выделите первый QLineEdit, нажмите ПКМ, выберете пункт
перейти к слоту
. QtCreator создаст слот с определленным именем, который будет автоматически связываться с выбранным сигналом.
Можно соединять также и руками, используя
connect
, чтобы имена слотов былы более информативными.
Записан
labview
Гость
Re: Сигналы и слоты
«
Ответ #7 :
Июль 30, 2010, 14:13 »
Да, огромное спасибо, уже понял, отредактировал выше.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Сигналы и слоты
«
Ответ #8 :
Июль 30, 2010, 15:47 »
>>И такое соединение называется слот.
категорически не верно. Соединение - это соединение.
Слот - это целевая функция соединения.
Далее, чтобы не было путаницы:
Экшон, правильно Action, или Действие, имеет отдельный смысл в Qt. И он не является слотом.
Сигнал, по смыслу, следует воспринимать буквально. Либо по аналогии с электричеством, в виде шнурка-источника.
Слот - в виде разъёма-приёмника.
А функцию QObject::connect, как операцию по вставке шнурка в разъём (это и есть соединение)
«
Последнее редактирование: Июль 30, 2010, 15:51 от lit-uriy
»
Записан
Юра.
labview
Гость
Re: Сигналы и слоты
«
Ответ #9 :
Июль 30, 2010, 16:27 »
Спасибо, информации о коннекте мне как раз и не хватало.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...