我想连接到QT中的窗口。窗口之间的QT信号和插槽
我知道如何在同一窗口中连接两个小部件。
using QObject::connect()
in ui_a.h
;
但现在,我有两个窗口。
六个文件。
例如:
ui_a.h
(窗口A)
a.h
a.cpp
(窗口A Widget
)
ui_b.h
(窗口B)
b.h
b.cpp
(窗口B Widget
)
如何连接位于不同窗口的两个窗口小部件?
谢谢。
我想连接到QT中的窗口。窗口之间的QT信号和插槽
我知道如何在同一窗口中连接两个小部件。
using QObject::connect()
in ui_a.h
;
但现在,我有两个窗口。
六个文件。
例如:
ui_a.h
(窗口A)
a.h
a.cpp
(窗口A Widget
)
ui_b.h
(窗口B)
b.h
b.cpp
(窗口B Widget
)
如何连接位于不同窗口的两个窗口小部件?
谢谢。
这两个窗口是否相互了解或完全独立?我的意思是可能是由窗口B创建的窗口A,反之亦然?但即使他们是独立的,我认为你有一个顶级的父对象,这将创建两个窗口吗?如果是这样,你应该可以访问这个顶层父对象中的两个小部件。在那里,你可以将它们连接起来:
QObject::connect(A->getWidgetInA(), SIGNAL(mySignal()), B->getWidgetInB(), SLOT(mySlot()));
getWidgetInA(), getWidgetInB()
只是指针返回到窗口A和B.
例如,在你的类一个窗口小部件:这是怎么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;
}
我不明白getWidgetInA()。如何返回指针? –
我已经用方法getWidgetInA()的最小示例更新了我的答案。 – Varius
您必须找到两个窗口对象的范围并将它们连接在那里。也许从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();
嗨,我现在有问题。在B中,我有两个小部件。我怎样才能连接其中之一?谢谢 –
在B的小部件中创建信号和插槽,并将它们从B的构造函数中连接起来。 –
我没有得到它。我已经创建了信号插槽。你是什么意思将它们从B的构造函数中连接起来? –
当你说两个窗口你是指一个父窗口或一个子窗口或两个独立的窗口? –