[英]QT how to pass variables to main window
我對 QT 和 C++ 很陌生,我需要將一些變量傳遞給主窗口(即:int a、double b、int c ...)。 在互聯網上,他們說使用全局變量不是實現它的合適方法。 所以我需要使用信號槽方法。 但我不知道如何使用信號槽將變量傳遞到不同的窗口。 在這種情況下,我應該在當前窗口中聲明插槽並在另一個窗口中聲明插槽嗎? 會不會像這樣工作:
//somewhere in the current window
int a=10;
connect (&a, &QPushButton::pressed(), mainwindow, &b);
//In main window
int b;
在 Qt 中,UI 組件之間的通信使用信號和插槽進行。 因此,您應該使用信號傳達某些變量已更改:
class SomeWindow : public QWindow {
private:
int a;
signals:
void aChanged(int a);
// more, of course.
}
在SomeWindow
類的某些事件處理程序中,您將擁有:
a = someInput.toInt();
emit aChanged(a);
例如,在另一個窗口中,您希望同步它自己的a_copy
變量:
class AnotherWindow : public QWindow {
private:
int a_copy;
public slots:
void aChangedHandler(int a);
// more, of course.
};
void AnotherWindow::aChangedHandler(int a) {
a_copy = a;
}
最后,您使用QObject::connect
將它們聯系在一起:
QObject::connect(someWindow, &SomeWindow::aChanged, anotherWindow, &AnotherWindow::aChangedHandler);
有時將信號傳播到AnotherWindow
是有意義的,這樣您就可以從類內部向它附加更多的處理程序。 在這種情況下,您可以創建一個aChanged(int a)
在信號AnotherWindow
和連接SomeWindow::aChanged
信號給它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.