Как изменить CurrentIndex с другой кнопки класса - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть два класса;Класс A с A-Ui-> кнопкой и Класс B с B-Ui-> stackedWidget.Я хотел бы изменить текущий индекс (ui-> stackedWidget-> setcurrentIndex (2)) из класса A. Когда я отпустил кнопку.

Что я пробовал до сих пор:

Я создалфункция в классе B.cpp и объявлена ​​в "bh" как открытые слоты:

void B::updatepage(int index) {

ui->stackedWidget->setcurrentIndex(index);

}

и

Подключен сигнал к кнопке;

connect( ui->pushButton, SIGNAL(released()), this, SLOT(updatepage(2));

Однако,я не получил никакой ошибки при запуске приложения, но не смог добиться того, что хотел.

Спасибо за любую рекомендацию.

1 Ответ

0 голосов
/ 24 апреля 2019

Вы не можете сделать это напрямую с помощью updatepage(2), что вы можете сделать, объявив использование функции в заголовке со значением по умолчанию, но это всегда изменится на второй странице:

Содержимое "ah":

#include "b.h"
class A {
...
public slots:
    void updatepage(int index = 2);
public:
    void setBDialogWindow(B* bDialogWindow);
...
private:
B* m_bDialogWindow;
...
};

В конструкторе B добавьте инициализацию m_aDialogWindow и соединение:

m_bDialogWindow = 0;
connect( ui->pushButton, SIGNAL(released()), this, SLOT(updatepage()));

и в реализацию ("a.cpp"):

void A::setBDialogWindow(B* bDialogWindow){
  m_bDialogWindow = bDialogWindow;
}

void A::updatepage(int index) {
  if ( m_bDialogWindow){
    m_bDialogWindow->ui->stackedWidget->setcurrentIndex(index);
  }
}

Также вам нужно изменить доступ пользовательского интерфейса в B на public, это не очень хорошая практика и должно быть сделано с помощью другого метода, но для примера это нормально.

Наконец, в main добавьте после объявления B и перед b.show () следующее:

a.setBDialogWindow(&w);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...