GUI-Menu菜单实例

运行代码:

//GUI-Menu菜单实例
#include"std_lib_facilities.h"
#include"GUI/Simple_window.h"
#include"GUI/GUI.h"
#include"GUI/Graph.h"
#include"GUI/Point.h"struct Lines_window :Window
{Lines_window(Point xy, int w, int h, const string& title);Open_polyline lines;
private:Menu color_menu;Button menu_button;Button next_button;Button quit_button;In_box next_x;In_box next_y;Out_box xy_out;void change(Color c) { lines.set_color(c); }void hide_menu() { color_menu.hide(); menu_button.show(); }static void cb_red(Address, Address);void red_pressed() { change(Color::red); hide_menu(); }static void cb_blue(Address, Address);void blue_pressed() { change(Color::blue); hide_menu(); }static void cb_black(Address, Address);void black_pressed() { change(Color::black); hide_menu(); }static void cb_menu(Address, Address);void menu_pressed() { menu_button.hide(); color_menu.show(); }static void cb_next(Address, Address);void next();static void cb_quit(Address, Address);void quit();
};Lines_window::Lines_window(Point xy, int w, int h, const string& title):Window(xy, w, h, title),color_menu(Point(x_max()-70,40),70,20,Menu::vertical,"color"),menu_button(Point(x_max()-80,30),80,20,"color menu",cb_menu),next_button(Point(x_max() - 150, 0), 70, 20, "Next point", cb_next),quit_button(Point(x_max() - 70, 0), 70, 20, "Quit", cb_quit),next_x(Point(x_max() - 310, 0), 50, 20, "next x:"),next_y(Point(x_max() - 210, 0), 50, 20, "next y:"),xy_out(Point(100, 0), 100, 20, "current(x,y):")
{color_menu.attach(new Button(Point(0, 0), 0, 0, "red", cb_red));color_menu.attach(new Button(Point(0, 0), 0, 0, "blue", cb_blue));color_menu.attach(new Button(Point(0, 0), 0, 0, "black", cb_black));attach(color_menu);attach(next_button);attach(quit_button);attach(next_x);attach(next_y);attach(xy_out);xy_out.put("no point");color_menu.hide();attach(menu_button);lines.set_color(Color::black);attach(lines);
}void Lines_window::cb_red(Address, Address pw)
{reference_to<Lines_window>(pw).red_pressed();
}void Lines_window::cb_blue(Address, Address pw)
{reference_to<Lines_window>(pw).blue_pressed();
}void Lines_window::cb_black(Address, Address pw)
{reference_to<Lines_window>(pw).black_pressed();
}void Lines_window::cb_menu(Address, Address pw)
{reference_to<Lines_window>(pw).menu_pressed();
}void Lines_window::cb_quit(Address, Address pw)
{reference_to<Lines_window>(pw).quit();
}void Lines_window::quit()
{hide();
}void Lines_window::cb_next(Address, Address pw)
{reference_to<Lines_window>(pw).next();
}void Lines_window::next()
{int x = next_x.get_int();int y = next_y.get_int();lines.add(Point(x, y));stringstream ss;ss << '(' << x << ',' << y << ')';xy_out.put(ss.str());redraw();
}int main()
try
{Lines_window win(Point(100, 100), 600, 400, "lines");return gui_main();
}
catch (exception& e) {cerr << "error:" << e.what() << '\n';keep_window_open();return 1;
}
catch (...) {cerr << "Oops:unknown exception!\n";keep_window_open();return 2;
}

运行结果:

 

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

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

相关文章

常见的网络攻击

​ 1.僵木蠕毒 攻击业内习惯把僵尸网络、木马、蠕虫、感染型病毒合称为僵木蠕毒。从攻击路径来看&#xff0c;蠕虫和感染型病毒通过自身的能力进行主动传播&#xff0c;木马则需要渠道来进行投放&#xff0c;而由后门木马&#xff08;部分具备蠕虫或感染传播能力&#xff09;构…

Mybatis架构简介

文章目录 1.整体架构图2. 基础支撑层2.1 类型转换模块2.2 日志模块2.3 反射工具模块2.4 Binding 模块2.5 数据源模块2.6缓存模块2.7 解析器模块2.8 事务管理模块3. 核心处理层3.1 配置解析3.2 SQL 解析与 scripting 模块3.3 SQL 执行3.4 插件4. 接口层1.整体架构图 MyBatis 分…

智能优化算法——灰狼优化算法(PythonMatlab实现)

目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物 2.3 狩猎 2.4 攻击猎物 2.5 寻找猎物 3 实现步骤及程序框图 3.1 步骤 3.2 程序框图 4 Python代码实现 5 Matlab实现 1 灰狼优化算法基本思想 灰狼优化算法是一种群智能优化算法&#xff0c;它的…

ChatGPT:探索人工智能语言模型的前沿技术

一、ChatGPT的背景和原理 ChatGPT是由OpenAI开发的基于GPT-3.5架构的语言模型。它通过大规模的预训练和微调过程&#xff0c;学习了海量的文本数据&#xff0c;并能够生成连贯、有逻辑的回答。ChatGPT使用了自注意力机制和深度神经网络&#xff0c;能够对上下文进行理解和生成有…

C++学习笔记1

Hello World程序的组成部分 可以分为两部分&#xff1a; &#xff08;1&#xff09;以#开头的是预处理器编译指令 &#xff08;2&#xff09;int main() 开头的是程序的主体 预处理编译指令#include 定义&#xff1a;预处理器是一个在编译前运行的工具 #include 是让预处理器获…

java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

linux shell脚本操作日期记录

最近碰到个需求&#xff0c;按日导出每日的数据&#xff0c;然后导入另一个数据库。需要写个日期相关的脚本。这里总结下 #!/bin/bashfunction dateFunc(){echo "从${2}到${3}" nextdate -d "$2" %sstart${2}e…

mysql取24小时数据

MySQL是一种常用的关系型数据库管理系统。在进行实时数据处理时&#xff0c;我们常常需要查询最近24小时的数据来进行分析和处理。下面我们将介绍如何使用MySQL查询最近24小时的数据。 SELECT * FROM table_name WHERE timestamp_column > DATE_SUB(NOW(), INTERVAL 24 HOU…

cocos creator Richtext点击事件

组件如图 添加ts自定义脚本&#xff0c;定义onClickFunc点击方法&#xff1a; import { Component, _decorator} from "cc";const { ccclass } _decorator; ccclass(RichTextComponent) export class RichTextComponent extends Component{public onClickFunc(even…

二十七、数据可视化

一、数据可视化是什么 借助图形来清晰有效表达信息的方式成为可视化&#xff0c;可视化可以帮助我们更好地传递信息。 二、数据可视化的基本流程 1、整理数据 数据可视化的基础还是数据&#xff0c;要将数据图表化&#xff0c;首先要整理数据&#xff0c;明确要把哪些数据图…

ffmpeg分离左右声道到多音轨

早期的视频文件将多语言放在了左右声道&#xff0c;手机上播放时&#xff0c;很多播放器并没有切换声道的功能&#xff0c;所以需要做分离 导出单声道视频 ffmpeg -i 01.rmvb -c:v h264 -af pan"stereo| c0FR | c1FR" -acodec aac 01.mp4 这里的FR是右声道&#x…

C++入门学习(2)

思维导图&#xff1a; 一&#xff0c;缺省参数 如何理解缺省参数呢&#xff1f;简单来说&#xff0c;缺省参数就是一个会找备胎的参数&#xff01;为什么这样子说呢&#xff1f;来看一个缺省参数就知道了&#xff01;代码如下&#xff1a; #include<iostream> using std…

【个人笔记】linux命令之ls

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考&#xff1a;为什么说&#xff1a;Linux中一切皆文件&#xff1f; ls命令 ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容…

实现大文件传输的几种方法,并实现不同电脑间大文件传输

随着网络技术的快速发展&#xff0c;大文件的传输需求越来越多&#xff0c;如何在不同的电脑之间实现大文件的快速传输&#xff0c;是一个挑战&#xff0c;下面介绍几种常用的方法可以解决这个问题。 1、利用局域网传输&#xff1a;把两台电脑接入同一个网络环境&#xff0c;通…

每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户

文章目录 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户 大家好&#xff0c;我是Maynor。…

【Android 】Prebuilt预编译

Android提供了Perbuilt编译方式&#xff0c;处理已经编译好的库或配置文件 Perbuilt:针对独立文件的操作。 Multi_Perbuilt:针对多个文件&#xff0c;对多个文件进行判断&#xff0c;调用Prebuilt依次处理。 上面的就是copy usb_modeswitch.conf 文件到 OUT 下面的 etc目录&am…

AtCoder Beginner Contest 310-D - Peaceful Teams(DFS)

Problem Statement There are N sports players. Among them, there are M incompatible pairs. The i-th incompatible pair (1≤i≤M) is the Ai​-th and Bi​-th players. You will divide the players into T teams. Every player must belong to exactly one team, an…

Neo4j开发

原生API 待补充。。。 SpringBoot整合Neo4j 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-Neo4j</artifactId> </dependency> 配置 spring:data:neo4j:uri: bolt://127.0.0.1…

Web3.0:重新定义数字资产的所有权和交易方式

随着区块链技术的发展和应用&#xff0c;数字资产的概念已经逐渐深入人心。数字资产不仅包括加密货币&#xff0c;还包括数字艺术品、虚拟土地、游戏道具等各种形式的数字物品。然而&#xff0c;在传统的互联网环境下&#xff0c;数字资产的所有权和交易方式往往受到限制和约束…

SQL中为何时常见到 where 1=1?

你是否曾在 SELECT 查询中看到过 WHERE 11 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE&#xff0c;所以它只是返回与没有 WHERE 子句时相同的查询结果。此外&#xff0c;由于查询优化器几乎肯定会删除它&#xff0c;因此对查询执行时间没…