菜单

页面接口(开关页面/消息对话框/自定义页面)

下载

使用方式

无需加入任何头文件,使用pm.或者pm->即可进行联想

全部函数

pm 的全部相关函数位于库/base/Interface.h 中

c++ 复制代码
/**
 * @brief 打开页面
 * @param id		页面名称id, 默认空时打开首页
 * @param mode		模式,默认0-打开新页面
 * @param target	父页面, 默认nullptr
 * @return 失败时返回空指针
 */
virtual IPagePtr open(const string& id = "", int mode = PageMode::NEWWIN, STTWidget* target=nullptr) throw() = 0;
/**
 * @brief 关闭指定页
 * @param id
 * @return
 */
virtual bool close(const string& id)=0;
/**
 * @brief 构建页面
 * @param id
 * @param mode
 * @param target
 * @return
 */
virtual IPagePtr build(const string& id = "", int mode = PageMode::NEWWIN, STTWidget* target=nullptr)=0;
/**
 * @brief 获取当前页(最上层页)
 * @return nullptr或页面指针
 */
virtual STTPage* getCurrentPage()=0;
/**
 * @brief 从已打开页面中获取指定页
 * @return nullptr或页面指针
 */
virtual STTPage* getPage(const string& id)=0;
/**
 * @brief 获取消息提示框
 * @param msg		消息提示内容
 * @param type		消息框类型
 * @return
 */
virtual IDialogPtr getMessageBox(const string& msg="", int type=MSGBOX_TYPE::TIP) = 0;
/**
 * @brief 获取消息确认框
 * @param msg		消息内容
 * @return
 */
virtual IDialogPtr getConfirmBox(const string& msg="") = 0;
/**
 * @brief 获取输入框
 * @param msg		消息内容
 * @param content	文本框内容
 * @return
 */
virtual IDialogPtr getInputBox(const string& msg = "" , const string& content = "") = 0;
/**
 * @brief 获取进度框
 * @param msg			消息内容
 * @param mode			进度框模式(0:倒计时,1:变量值变化)
 * @param parameters	设置参数 (例如:倒计时模式时:"5"[100的因数]  变量值变化模式时:"变量名")
 * @return
 */
virtual IDialogPtr getProgressBox(const string& msg = "", int mode=PROGRESS_TYPE::COUNT_DOWN, const string& parameters="") = 0;
/**
 * 获取文件选择对话框
 * @param title		标题
 * @return
 */
virtual IDialogPtr getFileBox(const string& title = "") = 0;
/**
 * @brief 获取用户登录
 * @param title		标题
 * @return
 */
virtual IDialogPtr getLoginBox(const string& title = "登录") = 0;
/**
 * @brief 获取用户注销提示框
 * @param title		标题
 * @return
 */
virtual IDialogPtr getLogoutBox(const string& title="注销", const string& tip="") = 0;
/**
 * @brief 指定屏保页
 *
 * @param id		页面名
 * @param type		屏保类型 0:系统默认 1:用户定制(注:此页面需要在build中能返回)
 * @param timeout	>=10(s), <10时关闭屏保
 */
virtual void setScreenSaver(const string& id = "", int type = 0, int timeout=0) = 0;
/**
 * @brief 设置熄屏参数
 *
 * @param t			延时时间(s),0-关闭熄屏功能
 * @param light		熄屏亮度值(1-100)
 */
virtual void setBackLightHoldingTime(int t = 0, int light = 0) = 0;
/**
 * @brief 通知外部输入(如:触屏点击、键盘等)
 *
 * @param reset		复位
 */
virtual void notifyEvdevInput(bool reset=false) = 0;
/**
 * @brief 获取锁屏熄屏状态
 * @return	0:非锁屏或熄屏	1:锁屏或熄屏状态
 */
virtual int getScreenSaverStatus() = 0;
/**
 * @brief 获取屏保类型
 * @return	屏保类型 0:普通 1:需认证
 */
virtual int getScreenSaverType() = 0;

重点函数介绍

打开页面/关闭页面

使用函数

c++ 复制代码
/**
 * @brief 打开页面
 * @param id		页面名称id, 默认空时打开首页
 * @param mode		模式,默认0-打开新页面
 * @param target	父页面, 默认nullptr
 * @return 失败时返回空指针
 */
virtual IPagePtr open(const string& id = "", int mode = PageMode::NEWWIN, STTWidget* target=nullptr) throw() = 0;

/**
 * @brief 关闭指定页
 * @param id
 * @return
 */
virtual bool close(const string& id)=0;

打开页面示例

c++ 复制代码
// 示例
// 1.关闭当前页,打开新页面 以下两种方法等价
pm->open("Frm01");
pm->open("Frm01",PageMode::NEWWIN);

// 2.在当前页面的基础上打开新页面,当前页面不关闭
pm->open("Frm01",PageMode::MODAL);

// 3.打开嵌入页
pm->open("Frm01",PageMode::EMBEDDED);

关闭页面示例

c++ 复制代码
// 示例
// 1.关闭当前页 仅当当前页面未被关闭时才有效
pm->close("Frm01");

以上函数中 Frm01 为第一页的页面 id。页面 id 如下图所示

自定义页面打开

  • 需要加入头文件#include "base/Interface.h"
  • 使用getRuntime()->getIPageMgr()代替页面的 pm 指针;
c++ 复制代码
getRuntime()->getIPageMgr()->open("Frm01");

对话框

c++ 复制代码
/**
 * @brief 获取消息提示框
 * @param msg		消息提示内容
 * @param type		消息框类型
 * @return
 */
virtual IDialogPtr getMessageBox(const string& msg="", int type=MSGBOX_TYPE::TIP) = 0;
/**
 * @brief 获取消息确认框
 * @param msg		消息内容
 * @return
 */
virtual IDialogPtr getConfirmBox(const string& msg="") = 0;
/**
 * @brief 获取输入框
 * @param msg		消息内容
 * @param content	文本框内容
 * @return
 */
virtual IDialogPtr getInputBox(const string& msg = "" , const string& content = "") = 0;
/**
 * @brief 获取进度框
 * @param msg			消息内容
 * @param mode			进度框模式(0:倒计时,1:变量值变化)
 * @param parameters	设置参数 (例如:倒计时模式时:"5"[100的因数]  变量值变化模式时:"变量名")
 * @return
 */
virtual IDialogPtr getProgressBox(const string& msg = "", int mode=PROGRESS_TYPE::COUNT_DOWN, const string& parameters="") = 0;
/**
 * 获取文件选择对话框
 * @param title		标题
 * @return
 */
virtual IDialogPtr getFileBox(const string& title = "") = 0;
/**
 * @brief 获取用户登录
 * @param title		标题
 * @return
 */
virtual IDialogPtr getLoginBox(const string& title = "登录") = 0;
/**
 * @brief 获取用户注销提示框
 * @param title		标题
 * @return
 */
virtual IDialogPtr getLogoutBox(const string& title="注销", const string& tip="") = 0;
/**
 * @brief 指定控件的事件处理函数
 * @param code		见stt::constant::MSGBOX_BTN, 如CLOSE、OK
 * @param object	控件obj this
 * @param handler	处理函数function (uint16_t code, LvEvent e)
 */
virtual IDialog* onEventHandler(uint16_t code, SttObject* object, EHandler handler);
/**
 * @brief 绑定“确定”按钮点击事件的回调函数。支持链式调用。
 * @param f 回调函数,类型为 std::function<void()>。
 *          该函数将在“确定”按钮被点击时执行。
 */
virtual IDialog* onOK(function<void()> f);
/**
 * @brief 绑定“取消”按钮点击事件的回调函数。支持链式调用。
 * @param f 回调函数,类型为 std::function<void()>。
 *          该函数将在“取消”按钮被点击时执行。
 */
virtual IDialog* onCancel(function<void()> f);
/**
 * @brief 绑定对话框“打开”事件的回调函数。支持链式调用。
 * @param f 回调函数,类型为 std::function<void()>。
 *          该函数将在对话框打开时执行。
 */
virtual IDialog* onOpen(function<void()> f);
/**
 * @brief 绑定对话框“关闭”或“销毁”事件的回调函数。支持链式调用。
 * @param f 回调函数,类型为 std::function<void()>。
 *          该函数将在对话框关闭或销毁时执行。
 */
virtual IDialog* onDispose(function<void()> f);
/**
 * @brief 显示对话框并初始化其内容。
 */
virtual void show();

示例

消息对话框:

c++ 复制代码
// 弹出信息对话框
pm->getMessageBox("弹出信息提示!")->show();
// 点击确定按钮时触发回调函数
pm->getMessageBox("弹出信息提示!")->onOK([]{
  cout<<"点击按钮时触发"<<endl;
})->show();

确认对话框:

c++ 复制代码
// 通过绑定Lambda表达式的方式为确认对话框绑定回调函数
pm->getConfirmBox("请确认当前操作?")->onOK([]{
  cout<<"确认时的函数逻辑"<<endl;
})->onCancel([]{
  cout<<"取消时的函数逻辑"<<endl;
})->show();

输入对话框:

c++ 复制代码
// 通过定义回调函数再绑定到输入对话框的按钮事件的方式
void Frm02::ok(uint16_t code, LvEvent e) {
string p=(char *)e.user_data;
  if(p=="123456"){
    cout<<"密码输入正确"<<endl;
  }else {
    cout<<"密码输入错误"<<endl;
  }
}
void Frm02::cancel(uint16_t code, LvEvent e) {
  cout<<"密码输入取消"<<endl;
}
IDialogPtr i = pm->getInputBox("请输入密码:");
i->onEventHandler(MSGBOX_BTN::OK,this,(EHandler)&Frm02::ok);
i->onEventHandler(MSGBOX_BTN::CLOSE,this,(EHandler)&Frm02::cancel);
i->show();

进度条对话框:

c++ 复制代码
// 关闭对话框时触发回调函数
pm->getProgressBox("拍照中,请稍后...",0,"5")
->onDispose([this](){
  cout<<"关闭时触发"<<endl;
})->show();

文件选择对话框:

c++ 复制代码
// 通过绑定回调函数的方式获取选中文件的路径
void Frm02::getpath(uint16_t code, LvEvent e) {
  string p=(char *)e.user_data;
  cout<<"文件路径:"<<p<<endl;
}
IDialogPtr i = pm->getFileBox("文件选择页");
i->onEventHandler(MSGBOX_BTN::OK,this,(EHandler)&Frm02::getpath);
i->show();

用户登录对话框:

c++ 复制代码
// 弹出用户登录对话框
pm->getLoginBox("登录")->show();

用户注销对话框:

c++ 复制代码
// 弹出用户注销对话框
pm->getLoginBox("注销")->show();
上一个
内部枚举常量
下一个
变量接口(vm变量管理器函数)
最近修改: 2025-01-23Powered by