信息输出组件(FITKCompMessageWidget)

news/2024/10/30 10:08:30/

在平台开发中,用户界面(UI)的友好性和交互性直接关系到应用程序的用户体验和满意度。一个高效、直观的信息展示机制,不仅能够提升用户的操作效率,还能在关键时刻为用户提供必要的指导和反馈。为了满足这一需求,我们特别设计并开发了FITKCompMessageWidget信息输出组件。

1 组件功能

信息输出组件是一个UI组件,是一个独立的QWidget对象,用于软件运行时的信息输出,包含常规信息、警告信息、错误信息、以及其他信息(求解过程信息输出)等, 同时具备右键菜单功能,可以实现信息窗口的清空与保存文本文件等操作。

2 组件依赖

该组件依赖平台核心层中的FITKAppFramework与FITKCore两个模块。

3 组件主要类

类名

所在文件

功能

ConsoleComponent

FITKConsoleComponent

组件接口类,用于组件加载与组件管理,实现信息窗口的管理。

FITKConsole

FITKConsole

信息输出窗口UI与功能实现,创建时自动关联FITKAppFramework中的outputMessageSig信号,实现信息自动输出。

4 组件使用示例

该组件的使用可以概括分为三部分:组件加载、创建窗口、发送消息。需要注意,在同一个应用中的多个信息窗口将会显示相同的信息,因此一般来说一个应用中只创建一个信息输出窗口。组件加载通过注册到AppFramework的组件生成器(FITKComponentFactory)的子类对象实现。示例代码如下:

1.#include “FITKConsoleComponent.h”
2.class MyComponentFactory : public AppFrame::FITKComponentFactory
3.{
4.public:
5.    MyComponentFactory () = default;
6.    ~MyComponentFactory () = default;
7.    QList<AppFrame::FITKComponentInterface *> createComponents() override
8.    {
9.         QList<AppFrame::FITKComponentInterface *> comps;
10.         //创建信息窗口组件
11.         comps << new Comp::ConsoleComponent();
12.         // 创建其他组件
13.        return comps;
14.    }
15.};

完成组件创建之后,在主界面初始化的时候需要创建窗体,并嵌入到需要的位置上,创建窗体的通过组件的getWidget函数可以实现,而组件则是从应用程序架构中的组件管理器查询得到,示例代码如下:

1.//获取组件
2. auto conWidgetComp = FITKAPP->getComponents()->getComponentByName("MessageConsole"); 
3.//强制类型转换,判断类型是否正确
4.Comp::ConsoleComponent *conWidgetInter = dynamic_cast<Comp::ConsoleComponent *>(conWidgetComp);
5. if (nullptr == conWidgetInter) return;  
6.QWidget* messWidget = conWidgetInter->getWidget();
7.//将messWidget放置到需要的位置
8.//do something else

当需要向信息输出窗口输出信息时,可直接通过应用程序框架中的FITKMessage提供的接口输出。这写接口将信号封装,能够保证线程安全。示例代码如下:

1.#include "FITKAppFramework/FITKMessage.h"
2.//正常输出,绿色字体
3.AppFrame::FITKMessageNormal("normal message");
4.//警告输出,黄色字体
5.AppFrame::FITKMessageWarning("warning message");
6.//错误输出,红色字体
7.AppFrame::FITKMessageError("error message");
8.//信息输出,黑色字体
9.AppFrame::FITKMessageInfo("message");


http://www.ppmy.cn/news/1543071.html

相关文章

5G网络中RLC层及其切割简介

5G网络中RLC层及其切割简介 在5G(NR)协议栈中RLC(无线链路控制)的上层是PDCP&#xff0c;下层为MAC&#xff1b;通过RLC信道与PDCP接口对接&#xff0c;通过逻辑信道与MAC接口对接&#xff1b;其间属一对一映射&#xff0c;所以属于一个RLC信道上的RLC SDU通常被映射到单个逻辑…

再论读书之事

人类社会发展过程中&#xff0c;创立语言、文字&#xff0c;等符号体系&#xff0c;后以记录信息之所需&#xff0c;将符号用之于绘画、雕刻、书本等不一而足的形式&#xff0c;以保存知识信息。此开明义&#xff0c;即书本为知识传递之媒介&#xff0c;这是本论之核心。 人自…

(蓝桥杯C/C++)——常用库函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

unity中的材质(material)贴图(texture)着色器(shader)介绍

TOC 在unity中&#xff0c;材质&#xff08;material&#xff09;、贴图&#xff08;texture&#xff09;和着色器&#xff08;shader&#xff09;是构建和渲染3D对象外观的基本概念 材质(material) 定义&#xff1a;材质是一个用于定义物体外观的资源&#xff0c;它将材质属性…

为什么使用Node.js爬虫更优

在现代网络开发中&#xff0c;爬虫技术已成为开发者不可或缺的工具。 在比较Node.js和Python在爬虫工具内存使用方面&#xff0c;我们可以从几个关键点来进行分析&#xff1a; 1. 异步I/O和事件驱动模型 Node.js是基于事件驱动和非阻塞I/O模型的&#xff0c;这使得它在处理高…

倪师学习笔记-天纪-易经八卦

一、简介 卦代表事情&#xff0c;爻代表时机&#xff0c;三爻为一卦八卦对应的天相&#xff0c;六十四卦对应人间事 二、八卦性 1、乾 天父亲向下看&#xff0c;无所求&#xff0c;雄心万丈始终如一&#xff0c;贞&#xff0c;坚心&#xff0c;专心至刚&#xff0c;天威&am…

Apache Paimon主键表的一些最佳实践

今天我们说说Paimon主键表的一些使用上的注意事项。 一、主键表 主键表是Paimon的一种表类型。用户可以插入、更新或删除表中的记录。 说的直白点就是&#xff0c;允许你设置唯一主键&#xff0c;然后覆盖更新。 Bucket选择 无论分区表还是未分区表&#xff0c;Bucket都是最小的…

软件测试学习笔记丨Selenium多frame切换

本文转自测试人&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22518 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于seleniu…