Qt: я должен направить свои сигналы от внешнего объекта через основное окно или непосредственно к элементам пользовательского интерфейса - PullRequest
2 голосов
/ 07 июня 2011

Я создаю приложение, в котором нескольким объектам за пределами основного окна необходимо будет общаться, чтобы подключиться к элементам пользовательского интерфейса, просто по событиям щелчка, запускающим функции-члены.Мне было интересно, добавлять ли слоты в главное окно, которые подключаются к каждому элементу пользовательского интерфейса, чтобы мне когда-либо приходилось связывать свои внешние объекты только с одним объектом пользовательского интерфейса, главным окном, или мне нужно напрямую подключать сигналы своих объектов к отдельному пользовательскому интерфейсуэлементы слотов.

Также может кто-нибудь поделиться примером того, как подключить сигнал от внешнего объекта в mainWindow, я очень новичок в этом, и до сих пор я всегда добавлял весь свой код в mainWindow, чтобы сохранить вещипросто, но я знаю, что это плохая практика, поэтому я думаю, что пришло время двигаться дальше.

Спасибо всем

j

1 Ответ

2 голосов
/ 07 июня 2011

Нет разницы в синтаксисе между подключением «внешнего» объекта или «внутреннего» к слоту.Вызов connect принимает указатель на два объекта (из / в) и на самом деле не заботится о том, где они находятся (кроме случаев, когда вы используете потоки).

Qt Сигналы и слоты документация содержит все, что вам нужно знать об этих соединениях, а примеры показывают реальный код, который использует сигналы.(Например, аналоговые часы используют QTimer, который является "внешним" по отношению к своему главному окну.)

Не существует единого универсального ответа на вопрос "куда я должен поместить"мои публичные слоты "вопрос.Делайте то, что легче поддерживать / логичнее для вашего конкретного сценария.Все ваши «внешние» сигналы, перенаправленные на один объект, который их отправляет, «чисты» с точки зрения интерфейса (API), но это означает, что вам потребуется поддерживать больше кода, чем если бы вы перенаправили сигналы непосредственно на объектчто должно реагировать на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...