【问题标题】:signals/slots setup in Dock widget that contains many tab widgets包含许多选项卡小部件的 Dock 小部件中的信号/插槽设置
【发布时间】:2011-11-24 15:20:08
【问题描述】:

我有一个继承 QDockWidget 的类。这个类中有四个 QTabWidgets(tcp 东西、ftp 东西、sql 东西和设置),每个都有自己的功能,这意味着每个都有不同的信号/槽需要捕获或调用。每个选项卡都有一些信号/槽,这些信号/槽对于主 UI 捕获或调用很重要。有没有办法避免在我的 QDockWidget 类中乱扔来自它包含的选项卡小部件的信号和槽,或者这就是它需要的方式完成了吗?

【问题讨论】:

  • QDockWidget 类不需要知道关于 QTabWidgets 和主窗口之间传递的信号的任何信息。
  • 但是connect()的第一个参数是发出信号的对象,那么如果主窗口只知道QDockWidget,我怎么能从封装在QDockWidget中的标签小部件捕获信号呢?
  • 标签小部件可以调用connect()。

标签: qt widget signals-slots qdockwidget


【解决方案1】:

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

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

然后您可以在主界面中执行类似的操作

connect( dockWidget()->tcpStuffWidget(), SIGNAL( ... ),
         this                          , SLOT  ( ... ) );

【讨论】:

  • 那么我只需要用 connect(..) 乱扔我的主 UI 代码吗?
  • 您可以将连接语句放置在您喜欢的任何位置,只要您有一个指向该位置的发送者和接收者的指针。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2014-03-13
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多