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