APUS IDE开发环境中,控件可绑定的变量一般只有一个,如需要对一些样式外观进行动态变化,可进行自定义绑定。
一、页面控件
新增一个页面,并设为启动页,放入一个【功能键】,放一个【切换按钮】,切换按钮绑定一个变量,示例中变量名为“变灰”

编辑
二、页面头文件代码
页面类中,在自定义代码块中,增加一个成员函数test1,如下
class Frm40: public STTPage {
public:
STTButton *wMButton1;
STTSwitch *wMSwitch1;
public:
Frm40(HmiApp *app, STTWidget *par, const string &id, const string &desc = "");
virtual ~Frm40();
void onInit();
void createParts();
void onLoad();
bool onClosing();
void onDispose();
/*CUSTOM_CODE_BEGIN*/
void test1(SttObject *org, IVariable *data);
/*CUSTOM_CODE_END*/
protected:
HmiApp *hmiApp;
};
三、页面cpp代码
void Frm40::test1(SttObject * org, IVariable* data) {
int v;
vm->getInt("变灰", v);//也可以用data参数,它是指向这个变量的
if(v==0) {
cout<<"disabled"<<endl;
wMButton1->setEnable(false);//禁用
} else {
cout<<"enabled"<<endl;
wMButton1->setEnable(true);//启用
}
}
四、变量连接
在onLoad中加入代码如下
void Frm40::onLoad() {
vm->get("变灰")->valueChanged.connect(this, &Frm40::test1);//连接变量变化函数
//根据需要,设置一下样式,示例中设置了按钮在禁用状态下的文本颜色变灰色
wMButton1->getStyle()->p_text->setColor(0xcccccc, stt::constant::WidgetState::DISABLED);
}
五、断开连接
在onDispose中加入代码如下
void Frm40::onDispose() {
vm->get("变灰")->valueChanged.disconnect(this, &Frm40::test1);//断开变量连接
}
六、示例演示
视登录情况,启用或禁用按钮
1.演示控件如下

编辑
- 登录按钮事件方法代码
/*wMButton2(登录按钮)的点击事件*/
pm->getLoginBox()->show();
2.注销按钮事件方法代码
/*wMButton3(注销按钮)的点击事件*/
pm->getLogoutBox()->show();
3.test1方法代码
void Frm40::test1(SttObject * org, IVariable* data) {
string uid;
vm->getChar(SysVar::UserID, uid);
if(uid.empty()) {
cout<<"disabled"<<endl;
wMButton1->setEnable(false);
} else {
cout<<"enabled"<<endl;
wMButton1->setEnable(true);
}
}
4.onLoad方法代码
void Frm40::onLoad() {
vm->get(SysVar::UserID)->valueChanged.connect(this, &Frm40::test1);//绑定变量变化的调用方法
//如有需要,设置一下样式
wMButton1->getStyle()->p_text->setColor(0xcccccc, stt::constant::WidgetState::DISABLED);
wMButton1->setEnable(false);//默认未登录,为禁用状态
}
5.onDispose方法代码
void Frm40::onDispose() {
vm->get(SysVar::UserID)->valueChanged.disconnect(this, &Frm40::test1);//断开变量变化调用方法
}
需要确认型号或具体项目?联系技术支持 ↗