0

我想将我的 wxStaticText 集中在 wxWindow 上,但似乎这不起作用。这是我的代码:

#include <iostream> 
#include <wx/wx.h>
#include <wx/gbsizer.h>

using namespace std;

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

bool MyApp::OnInit()
{
 wxFrame *frame = new wxFrame(NULL,wxID_ANY,wxT("fenetre"));
 wxWindow *win = new wxWindow(frame,wxID_ANY);
 win->SetWindowStyle(wxBORDER_RAISED);
 wxStaticText *text = new wxStaticText(win,wxID_STATIC,wxT("Mon texte"));
 wxBoxSizer *b = new wxBoxSizer(wxVERTICAL);
 wxGridBagSizer *box = new wxGridBagSizer();
 wxButton *button = new wxButton(frame,wxID_ANY,wxT("salut"));
 b->Add(text,0,wxALIGN_CENTRE);
 win->SetSizer(b);
 box->Add(win,wxGBPosition(0,0),wxDefaultSpan,wxALL|wxALIGN_CENTER|wxGROW);
 box->Add(button,wxGBPosition(1,0),wxDefaultSpan,wxALL|wxGROW);
 box->AddGrowableCol(0);
 box->AddGrowableRow(0);
 box->AddGrowableRow(1);
 frame->SetSizer(box);
 frame->Show(true);
 return true; 
}

DECLARE_APP(MyApp)
IMPLEMENT_APP(MyApp)

我不知道出了什么问题,但是 wxStaticText 并没有以我的 wxWindow 为中心。请告诉我缺少什么。

我的 wxStaticText 代码直接在框架上。

#include <wx/gbsizer.h>

using namespace std;

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

 bool MyApp::OnInit()
 {
   wxFrame *frame = new wxFrame(NULL,wxID_ANY,wxT("fenetre"));
   //wxFrame *win = new wxFrame(frame,wxID_ANY,wxT("hh"));
   wxStaticText *text = new       wxStaticText(frame,wxID_STATIC,wxT("Mon texte"),wxDefaultPosition,wxDefaultSize,wxALIGN_CENTER_HORIZONTAL);
  text->SetWindowStyle(wxBORDER_RAISED);
  //wxBoxSizer *b = new wxBoxSizer(wxVERTICAL);
  wxGridBagSizer *box = new wxGridBagSizer();
  wxButton *button = new wxButton(frame,wxID_ANY,wxT("salut"));
  //b->Add(text,0,wxALIGN_CENTRE);
  //win->SetSizer(b);
  box->Add(text,wxGBPosition(0,0),wxDefaultSpan,wxALL|wxALIGN_CENTER);
  box->Add(button,wxGBPosition(1,0),wxDefaultSpan,wxALL|wxGROW);
  box->AddGrowableCol(0);
  box->AddGrowableRow(0);
  box->AddGrowableRow(1);
  frame->SetSizer(box);
  frame->Show(true);
  return true;
 }

 DECLARE_APP(MyApp)
 IMPLEMENT_APP(MyApp)
4

1 回答 1

0

不要将控件直接放在框架上,即作为框架的子级。

不要这样做:

wxStaticText *text = new       wxStaticText(frame,wxID_STATIC,wxT("Mon texte"),

最好将 wxPanel 创建为框架的单个子项,并将控件放置为面板的子项。

请,请,请,请查看示例应用程序并按照其中的方式进行操作。

如果您使用示例应用程序代码作为起点,那么您将节省大量时间,包括您自己和其他人的时间。

于 2012-08-29T14:59:44.790 回答