向 wxWidgets 添加工具栏会产生奇怪的结果
Adding a toolbar to wxWidgets is generating a strange result
我正在尝试完成一项非常简单的任务,即向应用添加工具栏。我尝试了我能想出的最简单的方法,但结果有点奇怪,我想知道这是否应该以这种方式表现,或者我是否遗漏了什么。
代码在下面,注意我什至尝试使用原生图像(注释),但结果是一样的。
#include <wx/wx.h>
#include <wx/image.h>
// #include <wx/artprov.h>
class MyApp: public wxApp
{
public:
virtual bool OnInit();
};
class MyFrame: public wxFrame
{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
};
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame("Simple test", wxPoint(50, 50), wxSize(450, 340) );
frame->Show( true );
return true;
}
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame(NULL, wxID_ANY, title, pos, size)
{
// wxToolBar *toolbar = CreateToolBar();
// toolbar->AddTool(1001, _("New"), wxArtProvider::GetBitmap("wxART_NEW"));
// toolbar->Realize();
CreateStatusBar();
SetStatusText(wxT("Start"));
wxInitAllImageHandlers();
wxImage image(wxT("save.png"), wxBITMAP_TYPE_PNG);
if (image.Ok())
{
wxToolBar *toolbar = CreateToolBar();
toolbar->AddTool(1001, _("New"), image);
toolbar->Realize();
}
else
{
SetStatusText(wxT("image not ok"));
}
}
结果在这里,注意图标在应用栏中,而不是在单独的工具栏中。
这就是工具栏在最近的 macOS 版本中的工作方式,wxWidgets 完全是关于使用本机 UI,所以这绝对是一个功能而不是错误,因为本机应用程序看起来也是这样 - - 例如,看看 Finder。
我正在尝试完成一项非常简单的任务,即向应用添加工具栏。我尝试了我能想出的最简单的方法,但结果有点奇怪,我想知道这是否应该以这种方式表现,或者我是否遗漏了什么。
代码在下面,注意我什至尝试使用原生图像(注释),但结果是一样的。
#include <wx/wx.h>
#include <wx/image.h>
// #include <wx/artprov.h>
class MyApp: public wxApp
{
public:
virtual bool OnInit();
};
class MyFrame: public wxFrame
{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
};
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame("Simple test", wxPoint(50, 50), wxSize(450, 340) );
frame->Show( true );
return true;
}
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame(NULL, wxID_ANY, title, pos, size)
{
// wxToolBar *toolbar = CreateToolBar();
// toolbar->AddTool(1001, _("New"), wxArtProvider::GetBitmap("wxART_NEW"));
// toolbar->Realize();
CreateStatusBar();
SetStatusText(wxT("Start"));
wxInitAllImageHandlers();
wxImage image(wxT("save.png"), wxBITMAP_TYPE_PNG);
if (image.Ok())
{
wxToolBar *toolbar = CreateToolBar();
toolbar->AddTool(1001, _("New"), image);
toolbar->Realize();
}
else
{
SetStatusText(wxT("image not ok"));
}
}
结果在这里,注意图标在应用栏中,而不是在单独的工具栏中。
这就是工具栏在最近的 macOS 版本中的工作方式,wxWidgets 完全是关于使用本机 UI,所以这绝对是一个功能而不是错误,因为本机应用程序看起来也是这样 - - 例如,看看 Finder。