Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nkment от Июнь 22, 2012, 23:22



Название: как crearor связывает сигнал и слот
Отправлено: nkment от Июнь 22, 2012, 23:22
Доброе время суток!

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

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

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

объясните как оно работает  ???


Название: Re: как crearor связывает сигнал и слот
Отправлено: mutineer от Июнь 22, 2012, 23:36
Видимо он использует вот этот метод
http://doc.crossplatform.ru/qt/4.7.x/html-qt/qmetaobject.html#connectSlotsByName


Название: Re: как crearor связывает сигнал и слот
Отправлено: Bepec от Июнь 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().



Название: Re: как crearor связывает сигнал и слот
Отправлено: Alex Custov от Июнь 22, 2012, 23:45
Это мос вроде бы.

uic


Название: Re: как crearor связывает сигнал и слот
Отправлено: nkment от Июнь 22, 2012, 23:49
а как-то отследить/изменить эти связи автоматически можно, как в borlande?
или надо каждый раз .h и .cpp файлы  ручками исправлять  


Название: Re: как crearor связывает сигнал и слот
Отправлено: nkment от Июнь 22, 2012, 23:51
Это мос вроде бы.

uic

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

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



Название: Re: как crearor связывает сигнал и слот
Отправлено: mutineer от Июнь 22, 2012, 23:54
что такое мок?

http://doc.crossplatform.ru/qt/4.7.x/html-qt/metaobjects.html


Название: Re: как crearor связывает сигнал и слот
Отправлено: Bepec от Июнь 22, 2012, 23:57
Alex Gustov, помоему это всё же мета объект компилер автоматом привязывает сигналы к слотам с определёнными параметрами. Вот УИК я не рассматривал и о его возможностях незнаю ;)

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


Название: Re: как crearor связывает сигнал и слот
Отправлено: Alex_C от Июнь 23, 2012, 00:07
а как-то отследить/изменить эти связи автоматически можно, как в borlande?
или надо каждый раз .h и .cpp файлы  ручками исправлять  

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


Название: Re: как crearor связывает сигнал и слот
Отправлено: Alex Custov от Июнь 23, 2012, 00:47
Alex Gustov, помоему это всё же мета объект компилер автоматом привязывает сигналы к слотам с определёнными параметрами. Вот УИК я не рассматривал и о его возможностях незнаю ;)

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

Да, верно, для автоконнеткта используется metaobject. Только moc ничего не просматривает, это просто компилятор. Просматривает именно metaobject. Uic в данном случае просто генерирует код, который через metaobject создаёт коннекты.


Название: Re: как crearor связывает сигнал и слот
Отправлено: Bepec от Июнь 23, 2012, 01:02
В общем ты прав и я прав :) Ты более и я более :D Qt умён!