如何从另一个类按钮更改CurrentIndex

问题描述 投票:0回答:1

我有两节课;带A-Ui->按钮的A类和带B-Ui-> stackedWidget的B类。当我发布按钮时,我想从A类改变当前索引(ui-> stackedWidget-> setcurrentIndex(2))。

到目前为止我尝试过的:

我在B.cpp类中创建了一个函数,并在“b.h”中声明为公共插槽:

void B::updatepage(int index) {

ui->stackedWidget->setcurrentIndex(index);

}

将信号连接到按钮;

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

但是,当我运行应用程序时,我没有收到任何错误,但我无法实现我想做的事情。

谢谢你的任何建议。

c++ qt widget
1个回答
0
投票

您不能通过使用updatepage(2)直接执行此操作,您可以做的是声明在标头中使用默认值的函数,但这将始终更改为第二页:

“a.h”的内容:

#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中ui的访问权限改为public,这不是一个好习惯,应该通过另一种方法来完成,但是这个例子还可以。

最后,在B的声明之后和b.show()之前的main添加中:

a.setBDialogWindow(&w);
© www.soinside.com 2019 - 2024. All rights reserved.