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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как crearor связывает сигнал и слот  (Прочитано 5003 раз)
nkment
Гость
« : Июнь 22, 2012, 23:22 »

Доброе время суток!

в Creator на форме создаю pushButton,
перехожу к слоту через выбор сигнала cliked()
получаю void Widget::on_pushButton_clicked()

а года хочу изменить имя pushButton связь СИГНАЛ-СЛОТ пропадает,
облазил весь код и нигде не нашел

connect(pushButton, SIGNAL(...), this, SLOT(...))

объясните как оно работает  Непонимающий
Записан
mutineer
Гость
« Ответ #1 : Июнь 22, 2012, 23:36 »

Видимо он использует вот этот метод
http://doc.crossplatform.ru/qt/4.7.x/html-qt/qmetaobject.html#connectSlotsByName
Записан
Bepec
Гость
« Ответ #2 : Июнь 22, 2012, 23:38 »

Это не креатор Улыбающийся
Это мос вроде бы.

Вкратце синтаксис такой -
on_%названиеВиджета%_%егоСигнал%(%параметры сигнала%){}

Пример:
on_pushButton_clicked(){};
on_lineEdit_textChanged( const QString & text ){};
on_radioButton_toggled ( bool checked ){};


Соответственно слоты с этим названием будут вызываться при сигналах clicked() у кнопки, textChanged( const QString & text ) у lineEdit'a, toggled ( bool checked ) у радиоБуттона.

Очень здорово экономит код и забываешь постепенно про connect().

Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июнь 22, 2012, 23:45 »

Это мос вроде бы.

uic
Записан
nkment
Гость
« Ответ #4 : Июнь 22, 2012, 23:49 »

а как-то отследить/изменить эти связи автоматически можно, как в borlande?
или надо каждый раз .h и .cpp файлы  ручками исправлять  
Записан
nkment
Гость
« Ответ #5 : Июнь 22, 2012, 23:51 »

Это мос вроде бы.

uic

что такое мок?

поставил QT 4.8.1 и Creator 2.4.1 (MinGW)

Записан
mutineer
Гость
« Ответ #6 : Июнь 22, 2012, 23:54 »

что такое мок?

http://doc.crossplatform.ru/qt/4.7.x/html-qt/metaobjects.html
Записан
Bepec
Гость
« Ответ #7 : Июнь 22, 2012, 23:57 »

Alex Gustov, помоему это всё же мета объект компилер автоматом привязывает сигналы к слотам с определёнными параметрами. Вот УИК я не рассматривал и о его возможностях незнаю Подмигивающий

update: Освежил знания в Ассистенте - Именно МОС просматривает код и создаёт сигнал слотовые связи в соответствии с коннектами и названиями слотов Веселый
« Последнее редактирование: Июнь 23, 2012, 00:03 от Bepec » Записан
Alex_C
Гость
« Ответ #8 : Июнь 23, 2012, 00:07 »

а как-то отследить/изменить эти связи автоматически можно, как в borlande?
или надо каждый раз .h и .cpp файлы  ручками исправлять  

Забудь. Ты не в Борланде. Здесь все существенно лучше Улыбающийся
Теперь по делу - на мой взгляд в Qt есть только одна ошибка -сделано вот это искусственное связывание. Сам когда начинал программировать на Qt (всего то 3 месяца назад Улыбающийся ) это вызывало недоумение. Автоматически - нельзя. Но через некоторое время ты поймешь, насколько тут все проще, чем в Борланде.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Июнь 23, 2012, 00:47 »

Alex Gustov, помоему это всё же мета объект компилер автоматом привязывает сигналы к слотам с определёнными параметрами. Вот УИК я не рассматривал и о его возможностях незнаю Подмигивающий

update: Освежил знания в Ассистенте - Именно МОС просматривает код и создаёт сигнал слотовые связи в соответствии с коннектами и названиями слотов Веселый

Да, верно, для автоконнеткта используется metaobject. Только moc ничего не просматривает, это просто компилятор. Просматривает именно metaobject. Uic в данном случае просто генерирует код, который через metaobject создаёт коннекты.
Записан
Bepec
Гость
« Ответ #10 : Июнь 23, 2012, 01:02 »

В общем ты прав и я прав Улыбающийся Ты более и я более Веселый Qt умён!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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