如何使用QPushButton更改另一个类的变量的值?

时间:2019-03-27 20:00:03

标签: c++ qt qt5

我正在编写一个代码,使用QWidget创建所需的窗口小部件,然后将其设置为中央窗口小部件。

到目前为止还不错,但是在小部件中我有按钮,如果单击其中一个按钮,它将更改字符串变量值。

之后,我将其设置为中央窗口小部件,然后在MainWindow中创建了相同的按钮,但是我无法再更改想要的变量的值了:(


    {..... 
    linha_button=new QPushButton(this);
    linha_button->setGeometry(QRect(QPoint(41,924),QSize(40,40)));
    linha_button->setIcon(QIcon(url_linha));
    linha_button->setIconSize(QSize(30,30));
    linha_button->setCheckable(true);
    QObject::connect(linha_button, SIGNAL (clicked()), this, SLOT (lihaButton()));}

void MainWindow::lihaButton()
{
     Diagrama::modo="trafo";

}

变量modo在名为Diagrama的小部件中声明。 此代码不执行,错误是: 无效使用非静态数据成员'modo'

我该如何解决?

2 个答案:

答案 0 :(得分:1)

在您的Diagrama类中将一个setter声明为一个插槽,并将您的MainWindow连接到它:

class Diagrama: public QWidget
{
Q_OBJECT
...
public slots:
    void changeModo() { modo = "trafo"; }
};

在您的MainWindow班上:

QObject::connect(linha_button, SIGNAL (clicked()), yourDiagramaObject, SLOT(changeModo()));

答案 1 :(得分:0)

或使用lambda

connect(linha_button,&QPushButton::clicked,[this](){ modo = "trafo"; }) ;