我正在编写一个代码,使用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'
我该如何解决?
答案 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"; }) ;