Russian Qt Forum
Ноябрь 25, 2024, 18:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Двойной вызов слота для сигнала QPushButton::clicked()  (Прочитано 6141 раз)
Qtnewbie
Гость
« : Февраль 04, 2009, 21:28 »

Я понимаю что проблема элементарная и детская, но Qt изучаю тока 2-ю неделю и часто спотыкаюсь на простых вещах.
Вот назначил сигналу слот
Код:
connect(pbSetParam,SIGNAL(clicked()),SLOT(on_pbSetParam_clicked()));
В итоге вызов on_pbSetParam_clicked(); происходит 2 раза. Все файлы проекта прошерстил и не нашел ни каких двойственых вызовов. Объясните из-за чего может происходить двойной вызов?
Кнопку размещал с помощью дизайнера, а не руками, но в дизайнере ничего не назначал.
Записан
Rcus
Гость
« Ответ #1 : Февраль 04, 2009, 21:45 »

connectSlotsByName() же
Цитировать
void QMetaObject::connectSlotsByName ( QObject * object )   [static]
Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:
     void on_<widget name>_<signal name>(<signal parameters>);
Let's assume our object has a child object of type QPushButton with the object name button1. The slot to catch the button's clicked() signal would be:
     void on_button1_clicked();
вызывается автоматически в setupUi Улыбающийся
Записан
spirit
Гость
« Ответ #2 : Февраль 04, 2009, 21:47 »

при таком обзывании слота происходит авто-коннект.
Цитировать
void QMetaObject::connectSlotsByName ( QObject * object )   [static]
Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:
     void on_<widget name>_<signal name>(<signal parameters>);
Let's assume our object has a child object of type QPushButton with the object name button1. The slot to catch the button's clicked() signal would be:
     void on_button1_clicked();
See also QObject::setObjectName().
либо же имя слота поменяйте либо же не делаете этот коннект.
ЗЫ. блин, опоздал  Смеющийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Февраль 04, 2009, 21:48 »

Все очень просто, читаем про Automatic Connections
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Февраль 04, 2009, 21:49 »

Дааа, пока нашел ссылку, уже 2 поста запостили. Шустрые вы блин ))
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bojo
Гость
« Ответ #5 : Октябрь 07, 2009, 18:13 »

Я одного не пойму: а можно ли как то отключить такое поведение (Automatic Connections)?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Октябрь 07, 2009, 18:18 »

Я одного не пойму: а можно ли как то отключить такое поведение (Automatic Connections)?

Нет, отключить  нельзя. Просто не именуй слоты в виде on_okButton_clicked
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 22.