QT如何将变量传递到主窗口 我对Qt和C++非常陌生,我需要把一些变量传递给主窗口(即:int a,b b,int c…)。在互联网上,他们说使用全局变量不是实现这一目标的合适方式。所以我需要使用信号槽方法。但我不知道如何使用信号槽将变量传递到不同的窗口。在这种情况下,我应该在当前窗口中声明插槽,并将插槽声明给另一个窗口吗?你喜欢这项工作吗 //somewhere in the current window int a=10; connect (&a, &QPushButton::pressed(), mainwindow, &b); //In main window int b;

QT如何将变量传递到主窗口 我对Qt和C++非常陌生,我需要把一些变量传递给主窗口(即:int a,b b,int c…)。在互联网上,他们说使用全局变量不是实现这一目标的合适方式。所以我需要使用信号槽方法。但我不知道如何使用信号槽将变量传递到不同的窗口。在这种情况下,我应该在当前窗口中声明插槽,并将插槽声明给另一个窗口吗?你喜欢这项工作吗 //somewhere in the current window int a=10; connect (&a, &QPushButton::pressed(), mainwindow, &b); //In main window int b;,c++,qt,C++,Qt,在Qt中,UI组件之间的通信使用信号和插槽进行。 因此,您应该通过信号告知某些变量发生了变化: class SomeWindow : public QWindow { private: int a; signals: void aChanged(int a); // more, of course. } 在SomeWindow类的某些事件处理程序中,您将有: a = someInput.toInt(); emit aChanged(a); 例如,在另一个窗口中,您可能希望同步

在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);

有时,将信号传播到另一个窗口是有意义的,这样您就可以从类内部向它附加更多的处理程序。在这种情况下,您将创建一个
aChanged(int a)
在另一个窗口中发送信号并将
SomeWindow::a更改的
信号连接到它。

如果您只想在某个地方设置一个变量,您可以将按下的
信号连接到lambda,但我如何将其连接到另一个窗口中的不同变量?假设变量是a。还有比lambda方法更简单的方法吗?:)谢谢你的回答。我想不出的是1)我们需要在连接之前放置Qobject吗?在上一个问题中,我们没有添加它。2) 连接时,不允许添加主窗口而不是其他窗口部件。我遗漏了什么吗?1)如果您当前的类不是QObject的实例,则完全限定的版本也可以工作。我从不使用
connect
方法表单。对于2,您需要显示代码以及错误。代码是:QObject::connect(这是一个信号(batterySocChanged())、MainWindow()、&MainWindow::BatteryOne(int a));错误是:在没有对象参数的情况下调用非静态函数。请不要使用旧的
信号
插槽
宏。它们只会在运行时失败,并且很难调试。第二:QObject::connect需要两对(对象指针、函数指针)。函数指针只是名称,没有参数列表,因此
&MainWindow::batterydone
。添加括号会将其转换为调用。如果您需要针对特定的超负荷
电池通
,请咨询帮助者。对不起,我不是通灵者。我不知道你如何命名指向主窗口的指针。您的
电池箱中是否有指向它的指针?请出示密码。