Как изменить значение переменных другого класса, используя QPushButton? - PullRequest
0 голосов
/ 27 марта 2019

Я пишу код, который я использовал 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. Этот код не выполняется, ошибка: недопустимое использование элемента данных = = static 'modo'

Как я могу это исправить ??

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Объявите сеттер как слот в вашем классе Diagrama и подключите к нему свой MainWindow:

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

В вашем MainWindow классе:

QObject::connect(linha_button, SIGNAL (clicked()), yourDiagramaObject, SLOT(changeModo()));
0 голосов
/ 28 марта 2019

Или используйте лямбду

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