我想連接到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的構造函數中連接起來? –
當你說兩個窗口你是指一個父窗口或一個子窗口或兩個獨立的窗口? –