我想在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
)
如何连接不同窗口中的两个小部件?
谢谢。
答案 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();