我有两节课;具有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));
但是,我在运行应用程序时没有出现任何错误,但是我无法实现我想要做的事情。
谢谢你的推荐。
答案 0 :(得分: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
,这不是一个好习惯,应该通过另一种方法来完成,但是示例是可以的。
最后,在main中,在B声明之后和b.show()之前添加以下内容:
a.setBDialogWindow(&w);