wxwidgets Ribbon构建多个page与按钮响应

这篇具有很好参考价值的文章主要介绍了wxwidgets Ribbon构建多个page与按钮响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新建一个控制台应用程序,添加好头文件的依赖与lib库文件的依赖,修改属性:

wxwidgets Ribbon构建多个page与按钮响应,c++,wxwidgets,ribbon,wxwidgets

 将进入ribbon界面的文件与主界面的类分开:

1、RibbonSample.cpp


#include "stdafx.h"
#include "MyFrame.h"

class MyApp : public wxApp
{
public:
    bool OnInit() wxOVERRIDE;
};

wxDECLARE_APP(MyApp);
wxIMPLEMENT_APP(MyApp);

bool MyApp::OnInit()
{
    if (!wxApp::OnInit())
        return false;

    wxFrame* frame = new MyFrame(wxT("Ribbon Sample"));
    frame->Show();

    return true;
}
2、MyFrame.h

#pragma once

#include <wx/wx.h>
#include "wx/wxprec.h"
#include "wx/app.h"
#include "wx/frame.h"
#include "wx/textctrl.h"
#include "wx/ribbon/bar.h"
#include "wx/ribbon/buttonbar.h"
#include "wx/ribbon/gallery.h"
#include "wx/ribbon/toolbar.h"
#include "wx/sizer.h"
#include "wx/menu.h"
#include "wx/msgdlg.h"
#include "wx/dcbuffer.h"
#include "wx/colordlg.h"
#include "wx/artprov.h"
#include "wx/combobox.h"
#include "wx/tglbtn.h"
#include "wx/wrapsizer.h"

class MyFrame : public wxFrame
{
public:
    MyFrame(const wxString& title);
    ~MyFrame(){};

    void OnEnableUpdated(wxRibbonButtonBarEvent& evt);
    void OnEnableUpdateUI(wxUpdateUIEvent& evt);

    wxDECLARE_EVENT_TABLE();
};

3、MyFrame.cpp

#include "stdafx.h"
#include "MyFrame.h"

#define ID_SMALL_BUTTON_1 1000
#define ID_REMOVE_PAGE 1001
#define ID_MAIN_TOOLBAR 1002
#define ID_SELECTION_EXPAND_V 1003

wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_RIBBONBUTTONBAR_CLICKED(ID_REMOVE_PAGE, MyFrame::OnEnableUpdated)
EVT_UPDATE_UI(ID_REMOVE_PAGE, MyFrame::OnEnableUpdateUI)
wxEND_EVENT_TABLE()

MyFrame::MyFrame(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600))
    {
        wxRibbonBar* mainMenu = new wxRibbonBar(this, -1, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_FLOW_HORIZONTAL
            | wxRIBBON_BAR_SHOW_PAGE_LABELS
            | wxRIBBON_BAR_SHOW_PANEL_EXT_BUTTONS
            | wxRIBBON_BAR_SHOW_TOGGLE_BUTTON
            | wxRIBBON_BAR_SHOW_HELP_BUTTON
            );

        wxRibbonPage* home = new wxRibbonPage(mainMenu, wxID_ANY, "Examples");
        {
            wxRibbonPanel* panel = new wxRibbonPanel(home, wxID_ANY, "Button bar manipulation");
            wxRibbonButtonBar* bar = new wxRibbonButtonBar(panel, wxID_ANY);
            bar->AddButton(ID_REMOVE_PAGE, "Remove", wxArtProvider::GetBitmap(wxART_DELETE, wxART_OTHER, wxSize(32, 32)));

            wxRibbonPanel *selection_panel = new wxRibbonPanel(home, wxID_ANY, "Selection");
            wxRibbonButtonBar *selection = new wxRibbonButtonBar(selection_panel);
            selection->AddButton(ID_SELECTION_EXPAND_V, "Expand Vertically", wxArtProvider::GetBitmap(wxART_COPY, wxART_OTHER, wxSize(32, 32)));
        }

        wxRibbonPage* scheme = new wxRibbonPage(mainMenu, wxID_ANY, "Appearance");
        {
            wxRibbonPanel *provider_panel = new wxRibbonPanel(scheme, wxID_ANY,
                "Art", wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_NO_AUTO_MINIMISE);
            wxRibbonButtonBar *provider_bar = new wxRibbonButtonBar(provider_panel, wxID_ANY);
            provider_bar->AddButton(ID_REMOVE_PAGE, "Default Provider",
                wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)));
        }

        mainMenu->Realize();
        wxSizer *s = new wxBoxSizer(wxVERTICAL);
        s->Add(mainMenu, 0, wxEXPAND);

        SetSizer(s);

        Centre();
    }

void MyFrame::OnEnableUpdated(wxRibbonButtonBarEvent& evt)
{
    wxMessageBox("点击了按钮", "提示框");
}

void MyFrame::OnEnableUpdateUI(wxUpdateUIEvent& evt)
{
    evt.Enable(true);
}

展示效果图如下所示:

wxwidgets Ribbon构建多个page与按钮响应,c++,wxwidgets,ribbon,wxwidgets

 wxwidgets Ribbon构建多个page与按钮响应,c++,wxwidgets,ribbon,wxwidgets文章来源地址https://www.toymoban.com/news/detail-621269.html

到了这里,关于wxwidgets Ribbon构建多个page与按钮响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【ribbon】Ribbon的负载均衡和扩展功能

    参考:org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration IClientConfig:Ribbon的客户端配置,默认采用DefaultClientConfigImpl实现。 IRule:Ribbon的负载均衡策略,默认采用ZoneAvoidanceRule实现,该策略能够在多区域环境下选出最佳区域的实例进行访问。 IPing:Ribbon的实例检查策略,默认

    2024年02月15日
    浏览(37)
  • Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

    这是本人学习的总结,主要学习资料如下 - 马士兵教育 我们都知道 Ribbon 是用于负载均衡的。提供同一种服务的 Client 可能有多个,比如有多个 User Client 提供查询用户信息的服务,使用 Ribbon 就能简单地达到负载均衡的效果。 想要使用 Ribbon ,无论是服务提供者还是调用服务

    2024年04月25日
    浏览(37)
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍

    注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 服务注册中心(简称注册中心)是微服务框架的一个重要组件,在微服务架构里主要

    2024年02月22日
    浏览(69)
  • Ribbon饥饿加载

    Ribbon默认开启的是懒加载,在第一次访问的时候才会进行创建LoadBalanceClient,请求时间会很长。而饥饿模式会在项目启动的是后就创建,降低第一次访问时的功耗, 开启Ribbon饥饿加载

    2024年04月27日
    浏览(24)
  • SpringCloudAlibaba之Ribbon

    Ribbon是nacos自带的负载均衡器,属于客户端的负载均衡 但是在Spring高级版本中让LoadBalancer替代了 本人用的是2.1.0的nacos,ribbon还没有被替换。 使用: 在配置类中:@LoadBalanced 负载均衡的策略或者说规则有很多:       IRule 这是所有负载均衡策略的父接口,里边的核心方法就是

    2024年02月15日
    浏览(26)
  • 实用篇-Ribbon负载均衡

    回想一下上面的 \\\'服务发现\\\',order-service微服务向user-service微服务发送请求,但是user-service有两个,也就是开启了两个user-service实例,且端口不同,一个是8081,另一个是8082,下面我们将详细学一下请求在过程中经历了什么,如下图 其中负载均衡的各种策略是在IRule接口里面,

    2024年02月08日
    浏览(35)
  • 【微服务】Ribbon负载均衡

    在上文的案例中我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? 我们这里的@LoadBalanced相当于是一个标记,标记这个RestTemplate发出的请求要被我们的Ribbon拦截和处理。 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发

    2024年01月16日
    浏览(39)
  • 微服务-Ribbon负载均衡

    流程 原理 @LoadBalanced 标记RestTemplate发起的http请求要被Ribbon进行拦截和处理 源码分析 ctrl+shift+N搜索LoadBalancerInterceptor,进入。发现实现了ClientHttpRequestInterceptor(客户端Http请求拦截器)的intercept方法 拦截方法 打一个断点,启动order-application,浏览器发送请求http://localhost:8080

    2024年02月08日
    浏览(37)
  • 负载均衡——Ribbon

    Ribbon,Nexflix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法(轮询、随机等),自动地帮助服务消费者去请求。 当Ribbon和Eureka配合使用时,Ribbot可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

    2024年02月03日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包