簡體   English   中英

QT如何將變量傳遞給主窗口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM