cxy0408 2023-03-17 16:58 采纳率: 37.5%
浏览 24
已结题

ubuntu用codeblocks编译wxwidget项目自绘按键菜单,但wxBoxSizer有问题,如何解决?

想用wxBoxSizer设定菜单栏中的自绘按键的布局,但是设置的wxBoxSizer hbox好像没有起作用,按键还是只在起始位置画,并且设置为wxALL的border好像也只加在下面,不知道哪里出了问题,希望大家能为我解答,谢谢!
wxcustommenu.h代码:

#include <wx/wx.h>
#include "wxcustombutton.h"
class wxCustomMenu : public wxWindow
{
public:
    enum menu
    {
       homeMENU,
       libMENU,
       ID_FILEOPEN,
       ID_QUIT,
       ID_SETSNAPPATH,
       ID_ABOUT
     };
 
    wxBitmap* normal = new wxBitmap(wxT("m32.png"), wxBITMAP_TYPE_PNG);
    wxBitmap* down = new wxBitmap(wxT("s32.png"), wxBITMAP_TYPE_PNG);
    wxBitmap* hover = new wxBitmap(wxT("m32.png"), wxBITMAP_TYPE_PNG);
    wxBitmap* disable = new wxBitmap(wxT("w32.png"), wxBITMAP_TYPE_PNG);
 
    wxBitmap* normal1 = new wxBitmap(wxT("h32.png"), wxBITMAP_TYPE_PNG);
    wxBitmap* hover1 = new wxBitmap(wxT("c32.png"), wxBITMAP_TYPE_PNG);
 
    wxColor* prebg = new wxColor(wxT("GREEN"));
    wxColor* hoverbg = new wxColor(wxT("YELLOW"));
 
    wxCustomButton* m_btn_1;
    wxCustomButton* m_btn_2;
 
    wxCustomMenu(wxWindow* parent, wxColor bg);
 
    DECLARE_EVENT_TABLE()
};

wxcustommenu.cpp代码:

 
   #include "wxcustommenu.h"
#include <wx/sizer.h>
 
BEGIN_EVENT_TABLE(wxCustomMenu, wxWindow)
END_EVENT_TABLE()
 
wxCustomMenu::wxCustomMenu(wxWindow* parent, wxColor bg) : wxWindow(parent, wxID_ANY),
file_menu_popup_(NULL), setting_menu_popup_(NULL)
{
   wxInitAllImageHandlers();
   SetBackgroundColour(bg);
   wxBoxSizer* hbox = new wxBoxSizer(wxHORIZONTAL);
   wxPanel *menubar_panel_;
   menubar_panel_ = new wxPanel(this, wxID_ANY);
   menubar_panel_->SetBackgroundColour(bg);
   wxBoxSizer *top_sizer_= new wxBoxSizer(wxHORIZONTAL);
 
   m_btn_1 = new wxCustomButton( menubar_panel_, homeMENU, wxT("Home"), wxSize(130, 50), wxDefaultPosition);
   m_btn_1 -> normal_bitmap(normal)-> down_bitmap(down)-> hover_bitmap(hover);
   m_btn_1 -> disable_bitmap(disable);
   m_btn_1 -> pre_bg(prebg) -> hover_bg(hoverbg);
   hbox->Add(m_btn_1, 0, wxALL, 5);
   m_btn_2 = new wxCustomButton( menubar_panel_, libMENU, wxT("Library"), wxSize(130, 50), wxDefaultPosition);
   m_btn_2 -> normal_bitmap(normal1)-> down_bitmap(down)-> hover_bitmap(hover1);
   m_btn_2 -> disable_bitmap(disable);
   m_btn_2 -> pre_bg(prebg) -> hover_bg(hoverbg);
   hbox->Add(m_btn_2, 0, wxALL, 3);
 
   top_sizer_->Add(hbox, 1, wxEXPAND, 5);
 
   menubar_panel_-> SetSizer(hbox);
 
   hbox->Fit(menubar_panel_);
}

main.cpp代码:

#include "wxcustommenu.h"
#include <wx/sizer.h>
 
class MyApp: public wxApp
{
  wxFrame *frame;
public:
 
  bool OnInit()
  {
      frame = new wxFrame(NULL, wxID_ANY, wxT("Hello wxDC"), wxPoint(50,50), wxSize(800,600));
 
      wxCustomMenu *menubar_panel_ = new wxCustomMenu( frame, wxT("GREY") );
 
      wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
        sizer->Add(menubar_panel_, 0, wxEXPAND);
      menubar_panel_ -> Show();
 
      frame -> SetSizer(sizer);
      frame -> Show();
      return true;
  }
};
 
IMPLEMENT_APP(MyApp)

效果图:
下面绿色的是被遮挡的另一个按键,不知道为什么按键的上面和左边都没有设置到border,自绘按钮设置为鼠标放入按键窗口会使按键浮起

img

img

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-03-17 17:37
    关注

    感觉是有点错位,检查下位置的设置

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月18日
  • 已采纳回答 3月18日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误