wxTextCtrl未对齐到中心-wxSizerFlags在wxWidget中不起作用
wxTextCtrl not aligning to center - wxSizerFlags not working in wxWidget
此代码显示一个文本框和一个按钮。当用户单击按钮时,窗口将退出,但我想将textControl放在窗口的中心,但它不起作用。这是我的代码:
// base.h
#ifndef base_h_
#define base_h_
#include <wx/app.h>
#include <wx/button.h>
#include <wx/string.h>
#include <wx/frame.h>
#include <wx/gdicmn.h>
#include <wx/sizer.h>
#include <wx/panel.h>
class MainApp : public wxApp {
public:
virtual bool OnInit();
};
class MainFrame: public wxFrame {
public:
MainFrame( const
wxString& title, const wxPoint& pos, const wxSize& size );
wxBoxSizer *sizer;
void OnExit(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
};
#endif
// base.cpp
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include "base.h"
IMPLEMENT_APP(MainApp)
bool MainApp::OnInit() {
MainFrame *MainWin = new MainFrame(_T("gui"), wxDefaultPosition, wxSize(5000, 5000));
MainWin->Show(TRUE);
SetTopWindow(MainWin);
return TRUE;
}
BEGIN_EVENT_TABLE ( MainFrame, wxFrame)
EVT_BUTTON ( 3, MainFrame::OnExit )
END_EVENT_TABLE()
MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame((wxFrame*)NULL,- 1, title, pos, size) {
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
wxPanel *panel = new wxPanel(this, wxID_ANY, wxPoint(0, 0));
sizer->Add(new wxTextCtrl(panel , 1, ""), wxSizerFlags().Center());
sizer->SetSizeHints(this);
SetSizer(sizer);
}
void MainFrame::OnExit( wxCommandEvent& event) {
Close(TRUE);
}
我不知道我做错了什么,wxSizerFlags().Center不应该做我想做的事吗?
您的文本控件被包装在wxPanel中。将文本控件添加到sizer中,并将sizer设置为框架。这不起作用,甚至可能导致错误。您需要创建两个sizer,一个用于面板,另一个用于框架。您有几个选项:可以将面板扩展到框架的大小,并将文本ctrl放置在面板的中心,也可以将面板居中,并将文字ctrl扩展到面板的大小。以下是第一个选项的一些代码:
wxPanel* panel = new wxPanel(this, wxID_ANY);
wxTextCtrl* text = new wxTextCtrl(panel, 1, "");
wxBoxSizer* panelSizer = new wxBoxSizer(wxVERTICAL);
panelSizer->Add(text, wxSizerFlags().Center());
panel->SetSizer(panelSizer);
wxBoxSizer* frameSizer = new wxBoxSizer(wxVERTICAL);
frameSizer->Add(panel, wxSizerFlags().Expand());
SetSizer(frameSizer);
注意,我不熟悉wxSizerFlags,但我想它应该是这样工作的。您可能还必须明确设置面板的大小——现在它将使用一些默认大小。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- wxTextCtrl未对齐到中心-wxSizerFlags在wxWidget中不起作用