我有两节课;带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));
但是,当我运行应用程序时,我没有收到任何错误,但我无法实现我想做的事情。
谢谢你的任何建议。
您不能通过使用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);