精华内容
下载资源
问答
  • 命令按钮是容器类对象
    千次阅读
    2019-12-30 11:29:51

    一、引言

    Qt Designer中的Buttons部件包括Push Button(常规按钮、一般称按钮)、Tool Button(工具按钮)、Radio Button(单选按钮)、Check Box(复选框)、Command Link Button(命令链接按钮)和Dialog Button Box(对话框按钮盒)六种类型,这六种类型的Buttons部件,都是QWidget的直接或间接子类,同时除了Dialog Button Box外,其他五种都是QAbstractButton的直接子类。

    本节将详细介绍所有Buttons部件,由于QWidget属性在前面章节已经介绍,因此本节先介绍五大按钮部件的直接父类QAbstractButton相关属性,然后再针对每种部件介绍特有属性。

    二、QAbstractButton相关属性

    2.1、属性概述

    QAbstractButton是按钮类部件的直接父类(Dialog Button Box本身不是按钮),QAbstractButton在De

    更多相关内容
  • Fl_Group 一个基本的容器类,可以将其它控件进行编组。 Fl_Window 一个普通的窗口。 因为在FLTK中,每一个被新加入的控件都默认被分到最近的一个分组(Group)中,因此在摆放完一个分组的所有控件后要调用end()方法使...

    FLTK学习笔记1-绘制基本控件(按钮、文本输入、容器)

    FLTK中的坐标

    在FLTK中坐标均为正整数,其单位是像素(pixel),原点(x=0, y=0)在屏幕的左上角,如下图所示:
    FLTK_axis

    FLTK常用控件

    在FLTK中,常用控件有按钮控件、文本控件以及容器控件等。同时,所有控件的创建方法都一样:

    Fl_SomeWidget* pW = new SomeWidget(x, y, w, h, label);
    

    这里Fl_SomeWidget是控件的名称,x, y, w, h分别对应控件的x坐标,y坐标,宽度和高度,label对应控件的显示名称。

    按钮控件

    按钮(Button)是最常用的控件之一,通过按钮用户可以调用对应的回调函数,从而控制程序的行为。

    FLTK提供了以下几种常用按钮:

    1. Fl_Button
      这种是最普通也是最常用的按钮。
    2. Fl_Check_Button
      复选框控件,一组中可以有多个被选中。
    3. Fl_Return_Button
      这种按钮可以用回车键激活(即使焦点不在这个按钮上)。
    4. Fl_Radio_Round_Button
      (单)选框,与复选框不同的地方在于可以让一组中仅有一个单选框被激活。

    文本控件

    文本控件也是常用控件之一,它可以用来进行文字编辑以及输入输出。对于Fl_Text_Display和Fl_Text_Editor对象而言,需要绑定一个Fl_Text_Buffer对象作为要显示(编辑)的文字内容。

    FLTK提供了以下几种用于处理文本的控件:

    容器控件

    FLTK提供了以下几种容器控件:

    因为在FLTK中,每一个被新加入的控件都默认被分到最近的一个分组(Group)中,因此在摆放完一个分组的所有控件后要调用end()方法使后面添加的控件隶属于其父分组。

    绘制基本控件

    在FLTK中绘制基本控件并显示需要以下几个步骤:

    1. 创建一个窗口
    2. (可选)创建分组
    3. 创建控件
    4. 窗口调用end()方法
    5. 显示窗口
    6. 运行FLTK主循环

    示例程序:

    #include <FL/Fl.H>
    #include <FL/Fl_Double_Window.H>
    #include <FL/Fl_Button.H>
    #include <FL/Fl_Check_Button.H>
    #include <FL/Fl_Return_Button.H>
    #include <FL/Fl_Group.H>
    #include <FL/Fl_Text_Editor.H>
    #include <FL/Fl_Radio_Round_Button.H>
    
    int main(){
        Fl_Double_Window window(450, 350, "Simple Table");					/* 1. 创建一个窗口 */
        Fl_Group* pGroup = new Fl_Group(50, 50, 400, 150);					/* 2. 创建一个分组 */
        Fl_Button* pButton = new Fl_Button(70, 50, 150, 30, "Fl_Button");	/* 3. 创建控件 */
        Fl_Check_Button* pChkButton = new Fl_Check_Button(230, 50, 150, 30, "Fl_Check_Button");
        Fl_Return_Button* pRetButton = new Fl_Return_Button(70, 100, 150, 30, "Fl_Return_Button");
        Fl_Radio_Round_Button* pRndButton = new Fl_Radio_Round_Button(230, 100, 150, 30, "Fl_Round_Button");
        pGroup->end();														/* 4. 结束上个容器的创建 */
        Fl_Text_Editor* pText = new Fl_Text_Editor(50, 150, 350, 150);
        Fl_Text_Buffer* pBuff = new Fl_Text_Buffer();
        pText->buffer(pBuff);												/* pBuff->text()中的内容就是Fl_Text_Buffer中显示的内容 */
        pBuff->text("示例文字");
        pText->end();
        window.end();														/* 4. 结束上个容器的创建 */
        window.show();														/* 5. 显示窗口 */
        return Fl::run();													/* 6. 运行FLTK主循环 */
    }
    

    这里注意在编译的时候记得加上-lfltk命令(在MSYS2上还要加上-mwindows -DWIN32 -lole32 -luuid -lcomctl32)。

    运行结果:
    基本控件
    相关链接:
    完整程序
    专栏:FLTK
    FLTK学习笔记2-回调函数

    展开全文
  • 一. Java图形化界面开发概述 通常情况下,java语言一般是用来开发后台程序的,所谓的后台程序就是部署...java使用AWT和Swing相关的可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit)

    一. Java图形化界面开发概述

    通常情况下,java语言一般是用来开发后台程序的,所谓的后台程序就是部署在服务器端的程序,默默的工作,用户是看不到任何界面的。

    事实上,我们使用java语言同样可以完成图形化界面程序的开发,而学习图形化界面编程相对来说就会有趣很多,因为所见即所得,也就是说,我们写的大部分代码的执行效果,是可以通过图形化界面实实在在能够看得到的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dvCN3l5U-1611909625964)(./images/图形化界面.gif)]

    java使用AWT和Swing相关的类可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing库。通过使用AWT和Swing提供的图形化界面组件库,java的图形化界面编程非常简单,程序只需要依次创建所需的图形组件,并以合适的方式将这些组件组织在一起,就可以开发出非常美观的用户界面。

    二. AWT 编程

    2.1 AWT简介

    ​ 当 JDK 1.0发布时, Sun 提供了 一套基本的GUI类库,这个GUI类库希望可以在所有平台下都能运行 , 这套基本类库被称为"抽象窗口工具集 CAbstract Window Toolkit )",它为Java应用程序提供了基本的图形组件 。 AWT是窗口框架,它从不同平台的窗口系统中抽取出共同组件 , 当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台 。 简而言之 ,当使用 AWT 编写图形界面应用 时, 程序仅指定了界面组件的位置和行为,并未提供真正的实现,JVM调用操作系统本地的图形界面来创建和平台 一致的对等体 。

    ​ 使用AWT创建的图形界面应用和所在的运行平台有相同的界面风格 , 比如在 Windows 操作系统上,它就表现出 Windows 风格 ; 在 UNIX 操作系统上,它就表现出UNIX 风格 。 Sun 希望采用这种方式来实现 " Write Once, Run Anywhere " 的目标 。

    2.2 AWT继承体系

    所有和 AWT 编程相关的类都放在 java.awt 包以及它的子包中, AWT 编程中有两个基类 :Component和 MenuComponent。

    • Component:代表一个能以图形化方式显示出来,并可与用户交互的对象,例如 Button 代表一个按钮,TextField 代表 一个文本框等;
    • MenuComponent:则代表图形界面的菜单组件,包括 MenuBar (菜单条)、 Menultem (菜单项)等子类。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCFoz6kT-1611909625968)(./images/AWT组件继承体系.png)]

    其中 Container 是一种特殊的 Component,它代表一种容器,可以盛装普通的 Component。

    AWT中还有一个非常重要的接口叫LayoutManager ,如果一个容器中有多个组件,那么容器就需要使用LayoutManager来管理这些组件的布局方式。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwfORPvz-1611909625972)(./images/LayoutManager.png)]

    2.3 Container容器

    2.3.1 Container继承体系

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jx4UGDyf-1611909625975)(./images/Container继承体系.png)]

    • ​ Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
    • ​ Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
    • ​ ScrollPane 是 一个带滚动条的容器,它也不能独立存在,默认使用 BorderLayout 管理其内部组件布局;

    2.3.2 常见API

    Component作为基类,提供了如下常用的方法来设置组件的大小、位置、可见性等。

    方法签名方法功能
    setLocation(int x, int y)设置组件的位置。
    setSize(int width, int height)设置组件的大小。
    setBounds(int x, int y, int width, int height)同时设置组件的位置、大小。
    setVisible(Boolean b):设置该组件的可见性。

    Container作为容器根类,提供了如下方法来访问容器中的组件

    方法签名方法功能
    Component add(Component comp)向容器中添加其他组件 (该组件既可以是普通组件,也可以 是容器) , 并返回被添加的组件 。
    Component getComponentAt(int x, int y):返回指定点的组件 。
    int getComponentCount():返回该容器内组件的数量 。
    Component[] getComponents():返回该容器内的所有组件 。

    2.3.3 容器演示

    2.3.3.1 Window

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pq2EXWIo-1611909625977)(./images/FrameDemo.jpg)]

    import java.awt.*;
    
    public class FrameDemo {
    
        public static void main(String[] args) {
            //1.创建窗口对象
            Frame frame = new Frame("这是第一个窗口容器");
    
            //设置窗口的位置和大小
    
            frame.setBounds(100,100,500,300);
    
            //设置窗口可见
            frame.setVisible(true);
        }
    }
    

    2.3.3.2 Panel

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FwQmLTet-1611909625978)(./images/PanelDemo.jpg)])

    public class PanelDemo {
        public static void main(String[] args) {
            //1.创建Frame容器对象
            Frame frame = new Frame("这里在测试Panel");
            //2.创建Panel容器对象
            Panel panel = new Panel();
    
            //3.往Panel容器中添加组件
            panel.add(new TextField("这是一个测试文本"));
            panel.add(new Button("这是一个测试按钮"));
    
            //4.把Panel添加到Frame中
            frame.add(panel);
    
            //5.设置Frame的位置和大小
            frame.setBounds(30,30,500,300);
    
            //6.设置Frame可见
            frame.setVisible(true);
        }
    }
    

    为什么其中出现乱码了呢?
    由于IDEA默认使用utf-8进行编码,但是当前我们执行代码是是在windows系统上,而windows操作系统的默认编码是gbk,所以会乱码,如果出现了乱码,那么只需要在运行当前代码前,设置一个jvm参数 -Dfile.encoding=gbk即可。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.3.3.3 ScrollPane

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Brc4iPOH-1611909625981)(./images/ScrollPaneDemo.jpg)]

    import java.awt.*;
    
    public class ScrollPaneDemo {
    
        public static void main(String[] args) {
            //1.创建Frame窗口对象
            Frame frame = new Frame("这里测试ScrollPane");
    
            //2.创建ScrollPane对象,并且指定默认有滚动条
            ScrollPane scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
    
            //3.往ScrollPane中添加组件
            scrollPane.add(new TextField("这是测试文本"));
            scrollPane.add(new Button("这是测试按钮"));
    
            //4.把ScrollPane添加到Frame中
            frame.add(scrollPane);
    
            //5.设置Frame的位置及大小
            frame.setBounds(30,30,500,300);
    
            //6.设置Frame可见
            frame.setVisible(true);
    
        }
    }
    

    程序明明向 ScrollPane 容器中添加了 一个文本框和一个按钮,但只能看到 一个按钮,却看不到文本框 ,这是为什么 呢?这是因为ScrollPane 使用 BorderLayout 布局管理器的缘故,而 BorderLayout 导致了该容器中只有一个组件被显示出来 。

    展开全文
  • 概述 在游戏开发中,行为请求者与行为实现者往往是一种紧耦合性 请求一命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象 并把该命令传给相应的对象,该对象执行命令

    博客地址:blog.liujunliang.com.cn

    概述

    在游戏开发中,行为请求者与行为实现者往往是一种紧耦合性

    请求一命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象

    并把该命令传给相应的对象,该对象执行命令

    写在前面

    本文介绍在Unity3d客户端执行按钮点击操作,发起相应的命令并执行命令

    将操作行为的请求者与实现者解耦。常常运用于在对行为进行“记录”、“撤销/恢复”、“事务”等处理

    模式角色

    调用者(Invoker)、命令(Command) 、接收者(Received)

    开发案例

    调用者类

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Invoker
    {
        ICommand jumpCommand = new JumpCommand(new JumpReceived());
        ICommand pickCommand = new PickCommand(new PickReceived());
    
        public ICommand ExcuteCommand()
        {
            if (Input.GetKeyDown(KeyCode.J))
            {
                return jumpCommand;
            }
            else if (Input.GetKeyDown(KeyCode.P))
            {
                return pickCommand;
            }
    
            return null;
        }
    }
    

    命令类

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public abstract class ICommand 
    {
        public IReceived received;
        public abstract void Excute();
    }
    

    具体命令类---跳跃类

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class JumpCommand : ICommand
    {
        public JumpCommand(IReceived received)
        {
            this.received = received;
        }
    
        public override void Excute()
        {
            Debug.Log("发出跳跃命令");
            received.Action();
        }
    }
    

    具体命令类---拾取类

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PickCommand : ICommand
    {
    
        public PickCommand(IReceived received)
        {
            this.received = received;
        }
    
        public override void Excute()
        {
            Debug.Log("发出拾取命令");
            received.Action();
        }
    }
    

    接受者类

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public abstract class IReceived
    {
        public abstract void Action();
    }
    

    具体接受者类---跳跃类

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class JumpReceived : IReceived
    {
        public override void Action()
        {
            Debug.Log("接收跳跃请求");
        }
    }
    

    具体接受者类---拾取类

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PickReceived : IReceived
    {
        public override void Action()
        {
            Debug.Log("接收拾取请求");
        }
    }
    

    测试类

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CommandPattern : MonoBehaviour
    {
        private GameObject slider { get; set; }
        private Invoker invoker { get; set; }
    
        private void Start()
        {
            slider = GameObject.Find("Slider");
    
            invoker = new Invoker();
        }
    
        private void Update()
        {
            if (slider != null)
            {
                ICommand command = invoker.ExcuteCommand();
                if (command != null)
                {
                    command.Excute();
                }
            }
        }
    }
    

    测试完成,这样命令模式将键盘操作请求与接收通过命令Command进行隔离

    这样我们通过对命令模式进行扩展,可以对各个行为进行记录、事务/撤销(Undo、Redo)、恢复操作

    即将各个命令进行添加到容器内,用于存放各个命令

    模式分析

    优点:降低系统耦合性、新的命令很容易融入到系统内

    确定:导致系统中有过多的具体命令类与接收者类


    博客地址:blog.liujunliang.com.cn


    展开全文
  • VB 单选按钮、复选按钮和框架控件

    千次阅读 2020-09-16 10:05:20
    单选按钮Option和复选按钮...对于通用属性而言,前面的课程已经介绍过了,再次就不进行介绍了,其用法都是一样的,例如Name、Caption等属性都属于所有控件的通用属性,这通用属性以后的控件都不在重复介绍。 Valu
  • PyQt5 基本语法(二):按钮控件

    千次阅读 2022-03-30 00:06:36
    文章目录1、按钮控件1.1 QAbstractButton1.1.1 简介1.1.1.1 描述1.1.1.2 自定义按钮1.1.2 提示文本1.1.3 图标相关1.1.4 设置快捷键1.1.5 按钮自动重复1.1.6 状态检测1.1.7 排他性1.1.8 点击1.1.9 设置点击区域1.1.10...
  • Qt Designer中的Buttons部件包括Push Button(常规按钮、一般称按钮)、Tool Button(工具按钮)、Radio Button(单选按钮)、Check Box(复选框)、Command Link Button(命令链接按钮)和Dialog Button Box...
  • JavaWeb JSP内置对象之session对象

    千次阅读 2020-02-02 16:55:47
    4、session对象 在WEB应用中,当一个客户首次访问服务器上的某个jsp页面时,jsp引擎(比如TOMCAT)将为这个客户创建一个session对象,当客户关闭浏览器离开之后,session对象被注销。 设置session的目的是为了服务器...
  • Delphi中的容器类

    千次阅读 2011-03-10 00:46:00
       TList 类  TList 类实际上就是一个可以存储指针的容器类,提供了一系列的方法和属性来添加,删除,重排,定位,存取和排序容器中的类,它是基于数组的机制来实现的容器,比较类似于C++中的Vector和...
  • 若服务器已经安装好 Docker,我们只需一行命令即可安装并启用 MinIO: docker run -d -v /data/minio:/data/minio -p 9000:9000 minio/minio server /data/minio 该命令将主机 /data/minio 目录映射到容器中的 /...
  • 标签控件应用 【Tab Control 标签控件】 标签控件也比较常见。它可以把多个页面集成到一个窗口中, 每个页面对应一个标签,用户点击... 标签控件相当于是一个页面的容器,可以容纳多个对话 框,而且一般也只容纳对...
  • 为此,有公司专门推出了应用软件容器产品,即在操作系统层上创建一个个容器,这些容器共享下层的操作系统内核和硬件资源,但是每个容器可单独限制 CPU、内存、硬盘和网络带宽容量,并且拥有单独的 IP 地址和操作...
  • 标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关。 标签 标签(JLabel)是最简单的Swing组件。标签对象的作用是对位于其后的界面组件...将标签对象加入到某个容器。 JLabel的主要构
  • ▲点击上方“分布式实验室”关注公众号回复“1”抽取纸质技术书越来越多的工具已经从命令式范式转变为声明式范式。在本文中,我提出了一个框架,以帮你系统理解 React、Kubernetes、...
  • 标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关。 标签 标签(JLabel)是最简单的Swing组件。标签对象的作用是对位于其后的界面...将标签对象加入到某个容器。 JLabel的主要构...
  • delphi 容器类 3

    千次阅读 2012-10-16 08:34:34
    因此TList本身不能直接存储字符串,而字符串列表又是使用非常广泛的,为此Borland提供了TStrings类作为存储字符串的基类,应该说是它除了TList类之外另外一个最重要的Delphi容器类。要注意的是TStrings类本身包含了...
  • ALV OO 自定义Toolbar 和Command及listmenu按钮前言OOALV容器OOALV 工具栏1、定义OO 对象及字段2、OO ALV FIELDCAT 字段定义3、定义4、实现4.1 toolbar实现4.2 menu_button自定义菜单实现4.3 command 自定义命令...
  • 面渣逆袭:JVM经典五十问,这下面试稳了

    万次阅读 多人点赞 2021-12-28 21:42:52
    接下来设置对象头,请求头里包含了对象是哪个的实例、如何才能找到的元数据信息、对象的哈希码、对象的GC分代年龄等信息。 这个过程大概图示如下: 6.什么是指针碰撞?什么是空闲列表? 内存分配有两种方式,...
  • PAGE 56 VB简介 1在以下有关对象属性的叙述中不正确的是_ A一个对象的属性可分为外观...2Visual Basic中最基本的对象是_它是应用程序的基石也是其他控件的容器 A文本框 B命令按钮 C窗体 D标签 3有程序代码Text1.Text=
  • Python命令及使用方法

    千次阅读 2020-04-30 10:11:13
    在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;: 在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就...
  • 我要谈的是Delphi提供给我们的具有列表性质的:TStringList、TList和TObjectList。TStringList用来存放字符串,TList存放指针,而TObjectList则存放对象(Object)  在我们使用Delphi的过程中,有很多数据的...
  • 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程。 一、Java基本(JFC...
  • A、5 B、1 C、15 D、16 6、定义一个,必须使用的关键字是( ) A、public B、class C、interface D、static 7、定义一个接口必须使用的关键字是( ) A、public B、class C、interface D、static 8、如果容器组件p的...
  • test 是maven 工程的测试命令 mvn test,会执行src/test/java 下的单元测试。 clean clean 是maven 工程的清理命令,执行clean 会删除target 目录及内容。 package package 是maven 工程的打包命令,对于java 工程...
  • 我刚刚为我正在创建的一个工作项目解决了这个问题。galbendavid提供的答案确实有效,但仅...只要root是一个全局变量,就可以很容易地使用它生成具有相同根对象的其他窗口。在以下面的项目根目录为例。在root/├──...
  • delphi 容器类 3. TCollection

    千次阅读 2012-10-16 08:52:04
    TCollection 是TCollectionItenm对象一个容器。  关系TObject→TPersistent  每一个TCollection都拥有一组TCollectionItem对象。  在其Items属性数组中,TCcllection保存集合项目一个下标。Count ...
  • 标签语言的好处就是可以很轻松的和后台逻辑代码解耦和。 XAML在.NET框架当中的位置: 由于XAML被设计用来专门编写Windows窗口程序的,与BS架构区分客户端和服务器端不同,所以与HTML在浏览器上被解析不...
  • ActionScript3常用使用简介及案例

    万次阅读 2021-07-13 21:42:54
    显示 多个显示对象放在显示列表上 DisplayObject(显示对象基类) 继承关系 EventDispatcher->Object 属性 cacheAsBitmap : Boolean 如果设置为 true,则 Flash Player 将缓存显示对象的内部位图表示形式。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,278
精华内容 9,311
热门标签
关键字:

命令按钮是容器类对象