настройка сигналов/слотов в виджете Dock, который содержит много виджетов вкладок

У меня есть класс, который наследует QDockWidget. В этом классе есть четыре QTabWidgets (материал TCP, материал ftp, материал SQL и настройки), каждый из которых имеет свою собственную функциональность, означающую, что каждый из них имеет разные сигналы/слоты, которые необходимо захватить или вызвать. Каждая вкладка имеет несколько сигналов/слотов, которые важны для захвата или вызова основного пользовательского интерфейса. Есть ли способ предотвратить засорение моего класса QDockWidget сигналами и слотами из виджетов вкладок, которые он содержит, или это именно то, что нужно? сделать?


person TheFuzz    schedule 23.11.2011    source источник
comment
Классу QDockWidget не нужно ничего знать о сигналах, которые проходят между QTabWidgets и главным окном.   -  person TonyK    schedule 24.11.2011
comment
Но первый параметр connect() — это объект, который излучает сигнал, так как же я могу перехватить сигнал от виджета вкладки, инкапсулированного в QDockWidget, если главное окно знает только о QDockWidget?   -  person TheFuzz    schedule 24.11.2011
comment
Виджеты вкладок могут вызывать connect().   -  person TonyK    schedule 24.11.2011


Ответы (1)


Вы можете определить функции получения в заголовочном файле вашего подкласса QDockWidget, например:

inline QWidget* tcpStuffWidget() { return <pointer_to_widget>; }

и в основном пользовательском интерфейсе вы можете сделать что-то вроде

connect( dockWidget()->tcpStuffWidget(), SIGNAL( ... ),
         this                          , SLOT  ( ... ) );
person Tim Meyer    schedule 24.11.2011
comment
Так что мне просто придется замусорить мой основной код пользовательского интерфейса с помощью connect(..) тогда? - person TheFuzz; 25.11.2011
comment
Вы можете размещать операторы подключения где угодно, если у вас есть указатель на отправителя и получателя в этом месте. - person Tim Meyer; 25.11.2011