Qt 包含许多选项卡小部件的Dock小部件中的信号/插槽设置

Qt 包含许多选项卡小部件的Dock小部件中的信号/插槽设置,qt,widget,signals-slots,qdockwidget,Qt,Widget,Signals Slots,Qdockwidget,我有一个继承QDockWidget的类。此类中有四个QTABWidget(tcp内容、ftp内容、sql内容和设置),每个都有自己的功能,这意味着每个都有需要捕获或调用的不同信号/插槽。每个选项卡都有一些信号/插槽,这些信号/插槽对于主UI捕获或调用非常重要。是否有办法防止我的QDockWidget类被它所包含的选项卡小部件的信号和插槽丢弃,或者这就是它需要做的事?您可以在QDockWidget子类的头文件中定义getter函数,如: inline QWidget* tcpStuffWidget

我有一个继承QDockWidget的类。此类中有四个QTABWidget(tcp内容、ftp内容、sql内容和设置),每个都有自己的功能,这意味着每个都有需要捕获或调用的不同信号/插槽。每个选项卡都有一些信号/插槽,这些信号/插槽对于主UI捕获或调用非常重要。是否有办法防止我的QDockWidget类被它所包含的选项卡小部件的信号和插槽丢弃,或者这就是它需要做的事?

您可以在QDockWidget子类的头文件中定义getter函数,如:

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

QDockWidget类不需要知道QTABWidget和主窗口之间传递的任何信号。但是connect()的第一个参数是发出信号的对象,那么,如果主窗口只知道QDockWidget,那么我如何从封装在QDockWidget中的选项卡小部件捕获信号呢?选项卡小部件可以调用connect()。因此,我只需要将我的主UI代码与connect(..)混在一起,然后?你可以将connect语句放在任何你喜欢的地方,只要你在那个位置有一个指向发送者和接收者的指针。
connect( dockWidget()->tcpStuffWidget(), SIGNAL( ... ),
         this                          , SLOT  ( ... ) );