工业 HMI 页面控制中枢
采用单例模式设计的页面控制接口,提供跨线程安全的页面操作
页面管理器主要是对于页面的开启、弹出、关闭以及一些特质进行了封装和处理。方便用户可以通过 pm 指针,进行一些简单、安全的页面操作。
如果在当前展开页,获取页面控件是非常方便的。只需要通过控件指针
便可随意更改属性,改变显示内容。但是,如果在弹出页或者其他页中,需要获取到已存在的页面控件,便需要使用到页面指针,通过页面指针来寻找控件。
简单的页面打开,关闭,弹出等内容,以及各种弹出框可以参考页面接口
下面将着重讲解如何在 当前页/全局 获取需要调用的其他页的控件机方法
pm->open("Frm1",PageMode::MODAL); //打开页面1
pm->open("Frm2",PageMode::NEWWIN);//打开页面2
下面的示例背景:在页面 id 为 Frm01 的页面弹出了页面 Frm02,现在在 Frm02 上要使用 Frm01 上的控件及方法
步骤 1 在 Frm02.cpp 或者 Frm02.h 引入 Frm01 页的头文件
#include "Frm01.h"
步骤 2 获取 Frm01 的页面指针
Frm01 * frm = dynamic_cast<Frm01*>(pm->getPage("Frm01"));
步骤 3 判断指针是否为空 (一定要判断,如果出现空指针,那么可能会导致程序崩溃)
if (frm == nullptr) return;
步骤 4-1 调用页面的控件
frm->wMLabel1->setText("鑫通态");
步骤 4-2 调用页面的自定义方法
frm->updateLabelContext("鑫通态");
// Frm01.cpp
void updateLabelContext(const string& text){
wMLabel1->setText(text);
}
以下方法也可用于获取某一页页面指针 并调用其中的函数
步骤一 引入一个全局的变量 mCurFrm,用于判断是否位于当前页
步骤二 获取指针并调用函数
if (mCurFrm == 1){
STTPage* mCurPagePtr = dynamic_cast<STTPage*>(pm->open("Frm01", PageMode::NEWWIN));
Frm01 *frm = dynamic_cast<Frm01*>(mCurPagePtr);
frm->updateLabelContext("鑫通态");
}
和上面第一个例子不同,第二个例子中已经率先判断了当前页面是否存在,因此无需做判空的操作