我有一个小部件(mainWidget)和另一个小部件(childWidget),这是它的子级。

我想要:

connect(childWidget, SIGNAL(somethingHappened(...)), mainWidget, SLOT(handleIt(...));

我的问题是:是否将connect语句放在mainWidget或childWidget中?
  • 如果我在mainWidget的构造函数中创建childWidget并放置
    下一行的connect语句有效。但是,假设
    创建后,childWidget会执行某些操作,然后发出信号
    mainWidget成功。您可能会遇到一种情况
    语句仅在(childWidget的)函数发出
    信号。
  • 如果我将connect语句放在childWidget的构造函数中,
    问题是它对 parent 的 parent 一无所知
    插槽。如果我让childWidget继承mainWidget,它确实知道
    插槽-但这对我来说是一个糟糕的解决方案。无法得到
    反正工作。可能有一种正确的方法-我仍然
    看着。

  • 我对Qt编程很陌生。
    提前:谢谢您的帮助。

    最佳答案

    您应该精心设计代码,以免爬出神秘的错误。在主窗口小部件中编写连接将是一个更好的主意,并且理想情况下,子窗口小部件的构造函数中不应包含emit。可能您可以将发射代码移到另一个块,并在构造完成后进行调用。从“mainWidget”子类化“childwidget”只是为了获得对其插槽的访问,这看起来像一个不灵活的设计。设计应该这样,如果任何一个类都知道您的类发出的信号,则另一个类应该能够灵活地连接到它。

    关于c++ - Qt:在哪里放置连接语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13156703/

    10-08 23:19