GUI-Menu菜单实例(颜色+线型菜单)

这篇具有很好参考价值的文章主要介绍了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;
	Menu Line_style_menu;
	Button menu_button;
	Button Line_style_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 change_Line_style(Line_style l) { lines.set_style(l); }

	void hide_menu() { color_menu.hide(); menu_button.show(); }
	void hide_Line_style_menu() { Line_style_menu.hide(); Line_style_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_solid(Address, Address);
	void solid_pressed() { change_Line_style(Line_style::solid); hide_Line_style_menu(); }
	static void cb_dash(Address, Address);
	void dash_pressed() { change_Line_style(Line_style::dash); hide_Line_style_menu(); }
	static void cb_dot(Address, Address);
	void dot_pressed() { change_Line_style(Line_style::dot); hide_Line_style_menu(); }
	static void cb_menu(Address, Address);
	void menu_pressed() { menu_button.hide(); color_menu.show(); }
	static void cb_Line_style_menu(Address, Address);
	void Line_style_menu_pressed() { Line_style_button.hide(); Line_style_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"),
	Line_style_menu(Point(x_max()-190,40),70,20,Menu::vertical,"line style"),
	menu_button(Point(x_max() - 80, 30), 80, 20, "color menu", cb_menu),
	Line_style_button(Point(x_max()-190,30),100,20,"line style menu",cb_Line_style_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));
	Line_style_menu.attach(new Button(Point(0, 0), 0, 0, "solid", cb_solid));
	Line_style_menu.attach(new Button(Point(0, 0), 0, 0, "dash", cb_dash));
	Line_style_menu.attach(new Button(Point(0, 0), 0, 0, "dot", cb_dot));
	attach(color_menu);
	attach(Line_style_menu);
	attach(next_button);
	attach(quit_button);
	attach(next_x);
	attach(next_y);
	attach(xy_out);
	xy_out.put("no point");
	color_menu.hide();
	Line_style_menu.hide();
	attach(menu_button);
	attach(Line_style_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_solid(Address, Address pw)
{
	reference_to<Lines_window>(pw).solid_pressed();
}

void Lines_window::cb_dash(Address, Address pw)
{
	reference_to<Lines_window>(pw).dash_pressed();
}

void Lines_window::cb_dot(Address, Address pw)
{
	reference_to<Lines_window>(pw).dot_pressed();
}

void Lines_window::cb_menu(Address, Address pw)
{
	reference_to<Lines_window>(pw).menu_pressed();
}

void Lines_window::cb_Line_style_menu(Address, Address pw)
{
	reference_to<Lines_window>(pw).Line_style_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;
}

运行结果:

GUI-Menu菜单实例(颜色+线型菜单),C++程序设计原理与实践——bs,算法,c++,开发语言

 文章来源地址https://www.toymoban.com/news/detail-585630.html

到了这里,关于GUI-Menu菜单实例(颜色+线型菜单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】基于GUI的网络通信程序设计

      一. 程序内容 二. 要求分析 三. 程序编写 0. 程序结构 1. 服务端程序的GUI设计 2. 服务端业务逻辑的编写 3. 为GUI界面绑定按钮事件 4. 将服务端的源码复制后,进行重构,并加以修改为客户端 四、源代码 这是合工大软件工程专业Java程序设计课程实验二的内容,该实验要求编写

    2023年04月23日
    浏览(60)
  • 面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)

    一、团队成员及任务 组长:宗庆亮  计科(智能)22-1  202203200021 负责模块:静态登录界面实现以及学生信息系统管理界面的创建 组员:郑金洲  计科(智能)22-1  202203200022 负责模块:增加,删除,修改以及查询功能的实现 团队博客:面向对象程序设计(Java)课程设计——学生

    2024年02月03日
    浏览(43)
  • Android菜单Menu详解

    目录 1. 上下文菜单 2. 选项菜单 3. 溢出菜单 4. 弹出菜单-PopupMenu 5. 自定义菜单(菜单项) 菜单资源文件通常放置在 resmenu 目录下,在创建项目时,默认不自动创建menu目录,所以需手动创建。 Android Resource Directory→ value menu 或在创建 根元素 为 menu/menu 标记的xml文件对自动气建

    2024年02月03日
    浏览(25)
  • 微信小程序自定义底部菜单设计,固定在底部,并非使用tabBar设计

    1.微信小程序自定义底部菜单设计,并且固定在底部,并非tabBar设计 场景:比如加载详情页时:底部需要加入购物车、收藏、返回主页等设计 效果图: 点击事件发生 xx.wxml 样式设计xx.wxss js设计xx.js

    2024年02月16日
    浏览(37)
  • 合肥工业大学宣城校区Java技术实验二 基于GUI的网络通信程序设计

    1.掌握Java中GUI程序的编写,包括事件监听机制。 2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。 3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 编写程序完成以下功能: 1.设计一个基于GUI的客户-服务器的

    2023年04月24日
    浏览(35)
  • 《校园宿舍管理系统》之数据库程序设计/GUI/java/eclipse/MySQL/JDBC

    讲解视频链接:私信发! 源码:私信! 设计题目:          校园宿舍管理系统         班    级:                                               组    号:                  第一组                   成    员:                                

    2024年02月05日
    浏览(43)
  • Vscode 顶部Menu(菜单)栏消失如何恢复

    首先按一下 Alt按键 ,看一下是否恢复了菜单栏 如果恢复了想了解更进一步的设置,或是没能恢复菜单栏,可以看后续。 1.首先点击左下角 齿轮,打开settings;  或者 直接 ctrl + 逗号  打开settings 2.搜索找到  Menu Bar Visibility 这一项 3.1 设置为 visible 模式 Menu is always visible at th

    2024年04月09日
    浏览(32)
  • uniapp 模仿 Android的Menu菜单栏

    下面这张图就是我们要模拟的菜单功能  1. 我们使用uni-popup组件(记得要用hbuilder X导入该组件) uni-app官网 2. 将组件内的菜单自定义样式 目前存在的问题:使用uni-popup是无法遮挡tabBar,因为tabBar是原生组件,这里的解决方案是subNVue( pages.json 页面路由 | uni-app官网 )   1.

    2024年02月07日
    浏览(29)
  • el-menu使用递归组件实现多级菜单组件

    vue3+element plus版:点击此处 创建外层菜单 AsideMenu.vue 组件和子菜单项 AsideSubMenu.vue 组件,在 AsideSubMenu 中进行递归操作。 AsideMenu.vue文件内容如下: 判断高亮状态的activeMenu方法中的判断matchPath属性可以让多个路由不同的页面匹配同一个菜单高亮状态,因为菜单高亮状态是根据

    2023年04月12日
    浏览(32)
  • C++程序设计函数部分(定义+实例)

    目录 1、内联函数 2、默认形参值函数 3、重载函数 4、系统函数 (1)定义 在函数前面加上 inline 申明 eg: inline double CalArea(double radius) { return 3.14*radius*radius; } void main() { double r(3.0); double area; area=CalArea(r); coutareaendl; } (2)作用 提高运行的速度。 对于一些程序代码小,运行时间

    2023年04月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包