【发布时间】:2011-09-18 13:29:41
【问题描述】:
我是 wxWidgets 的新手并尝试设计一个 UI。我正在使用 Microsoft Visual Studio 2010。
我试图避免对 UI 元素使用绝对位置,因此我尝试使用 sizer 来完成所有工作。但是当我避免使用绝对点进行设计时,当我第一次打开应用程序时,我的 UI 看起来真的很糟糕。但是当我调整窗口大小、最大化或只是拉它的一角时,它又回到了我想要的状态。但最初每个项目都被收集到左上角。
我怎样才能避免这个问题?代码段如下:
SimpleUI::SimpleUI(const wxString& title)
:wxFrame(NULL, -1, title, wxPoint(-1,-1), wxSize(1280, 720))
{
wxPanel *panel = new wxPanel (this, -1);
wxColour col1;
col1.Set(wxT("WHITE"));
panel->SetBackgroundColour(col1);
// PNG Files import to the project
wxImage::AddHandler ( new wxPNGHandler );
wxBitmap Rseg;
Rseg.LoadFile("rSeg.png", wxBITMAP_TYPE_PNG);
wxBitmap Radjust;
Radjust.LoadFile("rAdjust.png", wxBITMAP_TYPE_PNG);
wxBitmap Rsurf;
Rsurf.LoadFile("rSurf.png", wxBITMAP_TYPE_PNG);
wxBitmap Gseg;
Gseg.LoadFile("gSeg.png", wxBITMAP_TYPE_PNG);
wxBitmap no;
no.LoadFile("no.png", wxBITMAP_TYPE_PNG);
// Initialization of the Sizers
wxBoxSizer *vbox = new wxBoxSizer (wxVERTICAL);
wxBoxSizer *hbox1 = new wxBoxSizer (wxHORIZONTAL);
seg = new wxBitmapButton(panel, ID_CLICKEDseg, Rseg);
seg ->SetBitmapDisabled(Gseg);
Connect(ID_CLICKEDseg, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimpleUI::OnClickedSeg));
adjust = new wxBitmapButton(panel, -1, Radjust);
surf = new wxBitmapButton(panel, -1, Rsurf);
nopass = new wxBitmapButton(panel, -1, no, wxPoint(-1, -1), wxDefaultSize, wxBORDER_NONE);
// Initialization of the Menubar
menubar = new wxMenuBar;
file = new wxMenu;
help = new wxMenu;
// Menubar build
menubar->Append(file,wxT("&File"));
menubar->Append(help,wxT("&Help"));
SetMenuBar(menubar);
// Layout and the main assignments
vbox->Add(-1,30);
wxBoxSizer *hbox3 = new wxBoxSizer (wxHORIZONTAL);
hbox3->Add(nopass, 0);
vbox->Add(hbox3, 0, wxALIGN_LEFT | wxLEFT, 120);
vbox->Add(-1,50);
hbox1->Add(seg, 0, wxRIGHT, 120);
hbox1->Add(adjust, 0);
vbox->Add(hbox1, 0, wxALIGN_LEFT | wxLEFT, 80);
vbox->Add(-1,80);
wxBoxSizer *hbox2 = new wxBoxSizer (wxHORIZONTAL);
hbox2->Add(surf, 0);
vbox->Add(hbox2, 0, wxALIGN_LEFT | wxLEFT, 80);
panel->SetSizer(vbox);
Center();
}
谢谢。
【问题讨论】:
-
很难学习 wxWidgets。下载 DialogBlocks 或 wxFormBuilder 并学习使用它们进行布局。
标签: visual-c++ wxwidgets