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

How to change the value of variables of another class using QPushButton?

本文关键字:变量值 另一个 何使用 QPushButton      更新时间:2023-10-16

我正在编写一个代码,我使用 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">

我该如何解决这个问题??

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

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

在您的MainWindow课上:

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

或者使用 lambda

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