【C++】开源:FTXUI终端界面库配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍FTXUI终端界面库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

官网:https://arthursonzogni.github.io/FTXUI/index.html

项目Github地址:https://github.com/ArthurSonzogni/FTXUI

FTXUI是一个开源的C++库,用于创建终端用户界面(TUI)。它旨在提供简单、现代和易用的界面设计,使开发者能够快速构建漂亮和交互性强的终端应用程序。

以下是FTXUI库的一些主要特点和功能:

1.界面元素:FTXUI提供了一系列可用的界面元素,如文本标签、按钮、复选框、文本输入框、表格等。这些元素可以方便地组合和布局,使开发者能够创建复杂的用户界面。

2.布局和渲染:FTXUI具有灵活的布局和渲染功能,包括弹性布局(flexbox)和网格布局。开发者可以使用这些布局来定义界面元素的位置和大小,并根据需要自动调整布局。

3.交互性:FTXUI支持处理键盘和鼠标事件,以及捕获用户的输入。开发者可以轻松地为界面元素添加事件处理程序,以响应用户的操作和输入。

4.颜色和样式:FTXUI提供了丰富的颜色和样式选项,使开发者能够创建具有吸引力和个性化的界面。开发者可以自定义元素的背景色、前景色、边框样式等。

5.跨平台支持:FTXUI可以在多个平台上运行,包括Linux、macOS和Windows等。它使用了跨平台的终端库底层,以便在不同的操作系统上提供一致的体验。

6.简洁的API:FTXUI的API设计简洁、直观,易于使用和理解。它提供了一组简单的函数和类来创建和操作界面元素,使开发过程更加高效和愉悦。

😊2. 环境配置

# 源码编译
git clone https://github.com/ArthurSonzogni/FTXUI
mkdir build && cd build
cmake ..
make
sudo make install # 是否安装到系统目录
# 如果要编译示例,将cmakelists里这一行改为ON
option(FTXUI_BUILD_EXAMPLES "Set to ON to build examples" ON)
# 程序编译参照官方的cmake示例
cmake_minimum_required (VERSION 3.11)# --- Fetch FTXUI --------------------------------------------------------------
include(FetchContent)set(FETCHCONTENT_UPDATES_DISCONNECTED TRUE)
FetchContent_Declare(ftxuiGIT_REPOSITORY https://github.com/ArthurSonzogni/ftxui# Important: Specify a GIT_TAG XXXXX here.
)FetchContent_GetProperties(ftxui)
if(NOT ftxui_POPULATED)FetchContent_Populate(ftxui)add_subdirectory(${ftxui_SOURCE_DIR} ${ftxui_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()# ------------------------------------------------------------------------------project(ftxui-starterLANGUAGES CXXVERSION 1.0.0
)add_executable(ftxui-starter src/main.cpp)
target_include_directories(ftxui-starter PRIVATE src)target_link_libraries(ftxui-starterPRIVATE ftxui::screenPRIVATE ftxui::domPRIVATE ftxui::component # Not needed for this example.
)

😆3. 使用说明

这个库提供了许多示例,cmake编译示例后,在build/examples/component目录可以运行示例查看:

./ftxui_example_button
./ftxui_example_print_key_press
./ftxui_example_window
./ftxui_example_input
...

在这里插入图片描述

最简示例:

#include <ftxui/dom/elements.hpp>
#include <ftxui/screen/screen.hpp>
#include <iostream>int main(void) {using namespace ftxui;// Define the documentElement document =hbox({text("left")   | border,text("middle") | border | flex,text("right")  | border,});auto screen = Screen::Create(Dimension::Full(),       // WidthDimension::Fit(document) // Height);Render(screen, document);screen.Print();return EXIT_SUCCESS;
}

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文本处理】正则表达式

一、简介 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&…

单例模式学习

单例模式是应用最广的设计模式之一&#xff0c;也是程序员最熟悉的一个设计模式&#xff0c;使用单例模式的类必须保证只能有创建一个对象。 一、为什么要使用单例&#xff1f; 在开发过程中&#xff0c;很多时候一个类我们希望它只创建一个对象&#xff0c;比如&#xff1a;线…

springboot(ssm智慧校园之家长子系统 智慧校园系统Java系统

springboot(ssm0智慧校园之家长子系统 智慧校园系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09…

苹果发布了一个Ferret(雪貂)多模态大模型,在一个无人问津的角落被一位博主捞起来

苹果12月14日释放了一个名为Ferret的多模态大语言模型&#xff0c;有的翻译是雪貂&#xff0c;有的是法学硕士&#xff0c;要我说&#xff0c;还是叫雪貂吧&#xff0c;接地气亲民&#xff0c;将来犯蠢的时候出来发张雪貂的可爱表情包作公关就完事了&#xff0c;你个法学硕士到…

C语言—每日选择题—Day63

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 设C语言中&#xff0c;一个int型数据在内存中占2个字节&#xff0c;则unsigned int型数据的取值范围为 A&#xff1a;0~255 B&#xff1a;0…

mysql8.x版本_select语句源码跟踪

总结 源码基于8.0.34版本分析&#xff0c;函数执行流程含义大致如下&#xff1a; do_command 方法从连接中读取命令并执行&#xff0c;调用 dispatch_command 对命令进行分发。dispatch_command 调用 mysql_parse 对命令进行解析&#xff0c;如果遇到一条语句用 ; 分隔多条命…

CGAL中三角形曲面网格近似

1、介绍 此软件包实现了变分形状近似&#xff08;VSA&#xff09;方法&#xff0c;通过更简单的表面三角形网格来近似输入表面网格。该算法的输入必须是&#xff1a; 三角形分割&#xff1b;组合2流形 输出是一个三角形汤&#xff0c;可以构建成多边形曲面网格。 给定一个输入曲…

linux操作系统——进程(二) 进程状态

进程状态 你真正的理解了进程的状态嘛?特别是操作系统教材中学过的进程状态&#xff0c;你真的理解了吗&#xff1f; 教材上关于进程状态的说明 下面我们以下图为例: 这是教材上对操作系统的说明&#xff0c;但是它并没有详细的说明&#xff0c;这些状态具体是什么&#xf…

大语言模型说明书

在浩瀚的信息宇宙中&#xff0c;大语言模型如同一颗璀璨的星星正在熠熠生辉。21世纪以来&#xff0c;人工智能可谓是飞速发展&#xff0c;从简单的神经网络到大语言模型、生成式AI&#xff0c;这并非仅仅是一种技术的进步&#xff0c;更是人类智慧的飞跃。大语言模型不仅仅是语…

获取请求的真实ip

一、node代码 const app express(); app.get("/abc", (req, res) > {const forwardedForHeader req.get("X-Forwarded-For");const realIpHeader req.get("X-Real-IP");let realIp null;if (forwardedForHeader && forwardedFor…

用makeself.sh脚本来制作一键发布文件(.run)

----------------------------------------------------------- author: hjjdebug date : 2023年 12月 25日 星期一 15:59:06 CST description: 用makeself.sh脚本来制作一键发布文件(.run) ---------------------------------------------------------- 我看到nvidia 发布驱动…

使用easyexcel对导出表格添加合计行

文章目录 一、背景二、实现1、写法一2、写法二 三、遇到的问题四、参考 一、背景 近期开发的一个新功能需要导出和前端展示样式一致的统计表格&#xff0c;而前端使用的elementui的table组件&#xff0c;show-summary属性选择后可以自动计算。后端导出时其他单元格与返回前端展…

华为数通方向HCIP-DataCom H12-831题库(多选题:241-249)

第241题 (NEW) 以下哪些操作可能会影响客户网络的正常运行? A、从设备上下载日志 B、软件升级 C、路由协议配置变更 D、debug核心交换机上转发的所有IP报文 答案:ABCD 解析: 第242题 对于防火墙的默认安全区 Trust 和 Untrust 的说法,正确的有 A、从 Trust 区域访问 Untr…

Vue在页面上添加水印

第一步&#xff1a;在自己的项目里创建一个js文件&#xff1b;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …

【MYSQL】MYSQL 的学习教程(六)之 SQL 语句执行流程

1. 一条 SQL 查询语句是如何被执行的 MySQL 的基本架构示意图如下所示&#xff1a; MYSQL 线程处理请求流程&#xff1a; SQL 接口&#xff1a;MySQL 中处理请求的线程在获取到请求以后获取 SQL 语句去交给 SQL 接口去处理查询解析器&#xff1a;解析器会将 SQL 接口传递过来…

mysql高级查询

当涉及到"高级查询"时&#xff0c;通常指的是使用SQL语言进行复杂的数据查询&#xff0c;包括多表连接、聚合函数、子查询、联合查询和条件筛选等。 多表连接查询&#xff1a; SELECT customers.customer_name, orders.order_number FROM customers JOIN orders ON…

操作系统期末复习知识点二计算与应用

1.理解银行家算法判断死锁的定理并能计算相关的参数。 2.能利用LRU、FIFO算法求缺页率。 3.纯页式管理中&#xff0c;求逻辑地址对应的物理地址&#xff0c;页号、页内地址长度&#xff0c;画出逻辑地址的格式&#xff0c;在引入块表时&#xff0c;求出有效访问时间。 4.可变分…

【Java】SpringBoot快速整合Kafka

目录 1.什么是Kafka&#xff1f; 主要特点和概念&#xff1a; 主要组成部分&#xff1a; 2.Kafka可以用来做什么&#xff1f; 3.SpringBoot整合Kafka步骤&#xff1a; 1. 添加依赖: 2. 配置 Kafka: 3. 创建 Kafka 生产者: 4. 创建 Kafka 消费者: 5. 发布消息: 6. 使…

【MySQL学习笔记007】约束

1、概述 &#xff08;1&#xff09;概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 &#xff08;2&#xff09;目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 &#xff08;3&#xff09;分类 约束 描述 关键字 …

【各种**问题系列】Java 数组集合之间的相互转换

&#x1f4cc; 问题点&#xff1a; 在 Coding 过程中经常会遇到数组、List、Set、Map 之间的相互转换......这里记录一下转换的几种方式。&#x1f636;&#x1f636;&#x1f636; 目录 &#x1f4cc; 集合转换 1.数组 转 List&#xff1a; 2.List 转 数组&#xff1a; 3…