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日
    浏览(26)
  • Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

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

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

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

    2024年02月22日
    浏览(47)
  • 手写Ribbon基本原理

    本文已收录于专栏 《中间件合集》   Ribbon 是一个客户端负载均衡器,它是Spring Cloud Netflix开源的一个组件,用于在分布式系统中实现对服务实例的负载均衡。它可以作为一个独立的组件使用,也可以与 Spring Cloud 等微服务框架集成使用。   Ribbon 的主要功能是根据一定的

    2024年02月09日
    浏览(29)
  • 自定义负载均衡(Ribbon)

    修改配置文件 application.yml

    2024年02月02日
    浏览(22)
  • 微服务-Ribbon(负载均衡)

    负载均衡的面对多个相同的服务的时候,我们选择一定的策略去选择一个服务进行 RoundRobinRule:简单的轮询服务列表来选择服务器 AvailabilityFilteringRule 对两种情况服务器进行忽略: 1.在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路状态”,短路状

    2024年02月12日
    浏览(23)
  • LoadBalancer 替换 Ribbon

    POM 移除 Ribbon 相关依赖 配置文件中禁用 Ribbon

    2024年01月16日
    浏览(25)
  • 4.Ribbon负载均衡

    上一节中,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 为什么我们只输入了service名称就

    2024年01月24日
    浏览(27)
  • 负载均衡——Ribbon

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

    2024年02月03日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包