窗口之间的QT信号和插槽

时间:2015-05-14 18:21:32

标签: qt

我想在QT中连接到Windows。

我知道如何在同一个窗口中连接两个小部件。

using QObject::connect()中的

ui_a.h;

但现在,我有两个窗口。

六个档案。

例如:

ui_a.h(窗口A)

a.h a.cpp(窗口A中的Widget

ui_b.h(窗口B)

b.h b.cpp(窗口B中的Widget

如何连接不同窗口中的两个小部件?

谢谢。

2 个答案:

答案 0 :(得分:2)

两个窗口是否彼此了解或者它们完全独立?我的意思是可能是由Window B创建的Window A,反之亦然?但即使它们是独立的,我假设你有一个顶级的父对象,它创建了两个窗口吗?如果是这样,您应该可以访问此顶级父对象中的两个小部件。在那里你可以连接它们:

QObject::connect(A->getWidgetInA(), SIGNAL(mySignal()), B->getWidgetInB(), SLOT(mySlot()));

getWidgetInA(), getWidgetInB()只返回指向窗口A和B中小部件的指针。

例如在您的类窗口A中:这就是getWidgetInA()的样子。

#include "a.h"

class WindowA: public QMainWindow
{
    Q_OBJECT

    public:

        WindowA();
        ~WindowA();

     a* getWidgetInA()
     {
         return widget_a;
     }

     private:

        a *widget_a; //in WindowA.cpp you have then widget_a = new a;
}

答案 1 :(得分:2)

您必须找到两个窗口对象的范围并将它们连接到那里。也许从main.cpp连接它们会更容易。例如,

QApplication a(argc, argv);
A a;
B b;
QObject::connect(&a, SIGNAL(someSingal()), &b, SLOT(someSlot()));
QObject::connect(&b, SIGNAL(anotherSingal()), &a, SLOT(anotherSlot()));
a.show();
b.show();
return a.exec();