菜单

(鑫通态) pm 相关(页面管理器)

下载

页面管理器核心特性(IPageMgr pm)

工业 HMI 页面控制中枢
采用单例模式设计的页面控制接口,提供跨线程安全的页面操作

页面管理器主要是对于页面的开启、弹出、关闭以及一些特质进行了封装和处理。方便用户可以通过 pm 指针,进行一些简单、安全的页面操作。

如果在当前展开页,获取页面控件是非常方便的。只需要通过控件指针便可随意更改属性,改变显示内容。但是,如果在弹出页或者其他页中,需要获取到已存在的页面控件,便需要使用到页面指针,通过页面指针来寻找控件。

简单的页面打开,关闭,弹出等内容,以及各种弹出框可以参考页面接口
下面将着重讲解如何在 当前页/全局 获取需要调用的其他页的控件机方法

打开页面

弹出式打开页面

cpp 复制代码
	pm->open("Frm1",PageMode::MODAL); //打开页面1

覆盖式打开页面

cpp 复制代码
	pm->open("Frm2",PageMode::NEWWIN);//打开页面2

在当前页使用其他页的控件及方法(高级用法)

示例一

下面的示例背景:在页面 id 为 Frm01 的页面弹出了页面 Frm02,现在在 Frm02 上要使用 Frm01 上的控件及方法

步骤 1 在 Frm02.cpp 或者 Frm02.h 引入 Frm01 页的头文件

c++ 复制代码
#include "Frm01.h"

步骤 2 获取 Frm01 的页面指针

c++ 复制代码
Frm01 * frm = dynamic_cast<Frm01*>(pm->getPage("Frm01"));

步骤 3 判断指针是否为空 (一定要判断,如果出现空指针,那么可能会导致程序崩溃)

c++ 复制代码
if (frm == nullptr)	return;

步骤 4-1 调用页面的控件

c++ 复制代码
frm->wMLabel1->setText("鑫通态");

步骤 4-2 调用页面的自定义方法

c++ 复制代码
frm->updateLabelContext("鑫通态");

// Frm01.cpp
void updateLabelContext(const string& text){
  wMLabel1->setText(text);
}

示例二

以下方法也可用于获取某一页页面指针 并调用其中的函数

步骤一 引入一个全局的变量 mCurFrm,用于判断是否位于当前页
步骤二 获取指针并调用函数

c++ 复制代码
if (mCurFrm == 1){
  STTPage* mCurPagePtr = dynamic_cast<STTPage*>(pm->open("Frm01", PageMode::NEWWIN));
  Frm01 *frm = dynamic_cast<Frm01*>(mCurPagePtr);
  frm->updateLabelContext("鑫通态");
}

和上面第一个例子不同,第二个例子中已经率先判断了当前页面是否存在,因此无需做判空的操作

最近修改: 2025-07-24Powered by