菜单

自定义控件样式绑定变量

下载

 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.演示控件如下

编辑

  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);//断开变量变化调用方法
}

 

最近修改: 2025-03-21Powered by