首页 > 其他分享 >start gtkmm 4 Programming (range controls)

start gtkmm 4 Programming (range controls)

时间:2024-01-31 12:56:16浏览次数:25  
标签:容器 set Gtk Programming value start range gtkmm adjustment

目录

基础

  • 容器:
    • 容器小部件与其他小部件一样,派生自Gtk::Widget.例如Gtk::Grid可以容纳许多子小部件,因此这些小部件通常具有更复杂的接口。其他的,例如 Gtk::Frame只包含一个子部件。
    • 从技术上讲Gtk::Button,它们Gtk::Window是单项容器,
    • 大多数单项容器小部件都具有set_child() 用于unset_child()子小部件的方法, 多项容器则是append(), attach() (用于Gtk::Grid)
    • 如果区域内超过一个widget 就可以用容器box来包含他们, 这能更好的排版
  • GTK::ustring
    • 用法几乎与C++中的 string 类相同
  • 内存管理
    • 类内widget:
      #include <gtkmm/button.h>
      #include <gtkmm/window.h>
      class Foo : public Gtk::Window
      {
      private:
        Gtk::Button theButton;
        // will be destroyed when the Foo object is destroyed
      };
      
    • Dynamic allocation with make_managed() and append()
      MyContainer::MyContainer()
      {
          auto pButton = Gtk::make_managed<Gtk::Button>("Test");
          append(*pButton); //add *pButton to MyContainer
      }
      
      当类型对象MyContainer被销毁时,按钮也将被删除。不再需要删除pButton 来释放按钮的内存;它的删除已委托给该 MyContainer对象。

解析 Chapter 7. Range Widgets

  • https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-range-example.html

  • 容器大纲:
    image

    • 这些容器的第二个参数是其所包含的每个子辈widget之间的间隔(不影响孙辈)
  • 控件滑块(slider) 在gtkmm里 定义为 Gtk::Scale
    布局第一行有两个 Gtk::Scale 和一个 Gtk::Scrollbar
    它们在初始化时传的第一个参数都为 m_adjustment 是一个 Glib::RefPtr<Gtk::Adjustment> 类型, 这意味着这三个范围widget 滑动一个时会其他两个会同步滑动

  • 剩余两个Gtk::Scale 他们用的是不同的( 都为Glib::RefPtr<Gtk::Adjustment>类型 )实体对象m_adjustment_pagesize和m_adjustment_digits 他们要获取对滑动(滚动)的当前值做一些逻辑处理;

    m_adjustment_pagesize->signal_value_changed().connect(
                sigc::mem_fun(*this,
                &ExampleWindow::on_adjustment2_value_changed)
    );
    

    比如Page Size 滑块滑动时 要求修改 m_adjustment 的 page size和 page 增量, 这些会直接影响到布局第一行的三个范围控件, 可以自己调调, 看看对应关系 这也与初始化m_adjustment 时设置的值相关

    void ExampleWindow::on_adjustment2_value_changed()
    {
        const double val = m_adjustment_pagesize->get_value();
        m_adjustment->set_page_size(val);
        m_adjustment->set_page_increment(val);
    
        // Note that we don't have to emit the "changed" signal
        // because gtkmm does this for us.
    }
    
  • 其他就是按钮(值显示与否)和DropDown(设置值位置)
    Gtk::Scale 对象本身就自己维护着一个对应值, 也提供了与值有关的方法
    set_value_pos(PositionType); //设置值位置
    set_draw_value(bool); //值显示与否
    set_digits(int); //设置值精度
    事件触发函数回调写法如上;

标签:容器,set,Gtk,Programming,value,start,range,gtkmm,adjustment
From: https://www.cnblogs.com/ComputerTech/p/17998579

相关文章

  • IPQ4019: Revolutionizing Long-Range Wireless Connectivity
    UnveilingtheIPQ4019:RevolutionizingLong-RangeWirelessConnectivityIntroduction:TheIPQ4019System-on-Chip(SoC)emergesasagame-changerforPoint-to-Point(PTP)andPoint-to-Multipoint(PTMP)applications,presentingadvancedfeaturestailoredfor......
  • elasticsearch 查询:其他查询prefix&fuzzy&wildcard&range®exp
    1.prefix查询前缀查询,可以通过一个关键字去指定一个field的前缀,从而查到指定的文档。#测试--prefix查询POST/king_test_person/_search{"query":{"prefix":{"name":{"value":"张"}}}} 2. fuzzy查询模糊查询,......
  • k8s集群断电后 机器不能启动问题--- Centos 服务器 无法启动 Failed to start Login S
    参考文档:https://blog.csdn.net/hedao0515/article/details/129718094先说下主要原因,是因为断电后有些文件没有完整写入,导致文件系统错误,需要借助原生工具修复文件系统。重启机器,进入linux选择内核页面,按ctrl+x进入引导页面,在linux16这一行最后填上init=/bin/bash有可能......
  • dealing with msys2 slow startup
    Alltoolsfromshellareveryslow·Issue#138·msys2/MSYS2-packages·GitHubhttps://github.com/msys2/MSYS2-packages/issues/138msys2.exetakesalmost40secondstolaunch·Issue#1785·msys2/MSYS2-packages·GitHubhttps://github.com/msys2/MSYS2-p......
  • start cmd or shell from current directory in windows file explorer
    startwindowscmdincurrentdirectoryMypreferanceofstartingcmdinacertaincertaindirectoryissimplynavigatingtothedirectroy;pressingctrl+Ltofocustheaddressbar;typingcmd+enter.Bythisway,anewconsolewindowwillstartandit......
  • 2019-2020 ICPC Southwestern European Regional Programming Contest (SWERC 2019-20
    Preface这场总体打的不错,虽然最后RushL题失败,没有想到关键优化导致没卡过去有点可惜,但奈何徐神还是太C了最后10题下班,赛后祁神发现L关键优化10min改完就过了,同时赛中徐神也看出了E的做法,感觉这场时间充足甚至有AK的可能的说A.Environment-FriendlyTravel很典的一个题,不难......
  • Programming Abstractions in C阅读笔记:p254-p257
    《ProgrammingAbstractionsinC》学习第70天,p254-p257总结,总计4页。一、技术总结1.minimaxstrategy(极小化极大算法)p255,Thisidea--findingthepositionthatleavesyouropponentwiththeworstpossiblebestmove--iscalledtheminimaxstrategybecausethegoa......
  • pwnable_start
    pwnable_startbamuwe@qianenzhao:~$checksecstart[*]'/home/bamuwe/start'Arch:i386-32-littleRELRO:NoRELROStack:NocanaryfoundNX:NXdisabledPIE:NoPIE(0x8048000)保护全关,但不能看伪代码,只能看汇编思路:......
  • Web server failed to start. Port 8080 was already in use.
    场景上午在启动程序时,发现端口被占用,启动失败了***************************APPLICATIONFAILEDTOSTART***************************Description:Webserverfailedtostart.Port8080wasalreadyinuse.Action:Identifyandstoptheprocessthat'slisteni......
  • Docker启动Nacos报错:Nacos Server did not start because dumpservice bean construct
    一、表象重启服务器之后Docker运行Nacos容器,启动成功,但是外网无法访问。查看了一下Nacos启动日志(dockerlogsnacos容器名)二、分析很明显是数据库配``置问题。。如果是数据库配置的问题,可以着重检查以下信息尤其是MySQL内网Host,查询方式见Docker安装Nacos三、解决我已......