使用大小调整大小调整 wxListView 的大小
resizing wxListView with sizer
本文关键字:调整 wxListView 更新时间:2023-10-16
在调整wxFrame大小时,我正在努力调整wxListView的大小。我设法调整了ListView的父面板的大小,并且同一面板中的wxButton也随着预期调整窗口大小而移动。
BluetoothConnectFrame::BluetoothConnectFrame(const wxString& title, const wxPoint& pos, const wxSize& size, Frame* parent)
: wxFrame(NULL, wxID_ANY, title, pos, size),
bleConnector(std::make_unique<BluetoothConnector>()),
mainPanel(new wxPanel(this, wxID_ANY, wxPoint(0,0), wxSize(size.x, size.y / 4 * 3), wxTAB_TRAVERSAL, "Main Panel")),
sizer (new wxBoxSizer(wxVERTICAL))
{
bledevListView = std::make_unique<wxListView>(new wxListView(mainPanel, ID_Bluetooth,
wxPoint(size.GetWidth() - size.GetWidth() + 20, size.GetHeight() - size.GetHeight() + 20),
wxSize(size.GetWidth() - 50, size.GetHeight() / 2)));
bledevListView->AppendColumn("Address");
bledevListView->SetColumnWidth(0, getBLEListViewSize().x/ 2);
bledevListView->AppendColumn("Name");
bledevListView->SetColumnWidth(1, getBLEListViewSize().x / 2);
stopDiscButton = new wxButton(mainPanel, wxID_ANY, "Stop discovery", wxPoint(0,0), STOPDISCSIZE, wxBU_LEFT, wxDefaultValidator, "Stop disc");
sizer->Add(bledevListView.get(), 1 ,wxEXPAND, 1);
sizer->Add(stopDiscButton );
mainPanel->SetSizer(sizer);
}
wxSizeEvent 函数
void BluetoothConnectFrame::OnSize(wxSizeEvent & e) {
size = e.GetSize();
mainPanel->SetSize(getMainPanelSize());
sizer->Layout();
}
在 OnSize 事件中打印出 bledevListView size 将打印正确的值。但是,UI 不会更新列表视图以匹配这些值。我尝试在bledevListView上使用SetSize((,Update((,Refresh((,并且还尝试在不使用wxSizer的情况下调整wxListView的大小,但没有任何效果。有什么提示吗?
正如其他人在注释中指出的那样,您可以在处理程序中显式地进行布局wxEVT_SIZE
或者(这是唯一的或(使用大小器。要执行后者,请首先完全删除框架的OnSize()
处理程序。您可能仍然希望拥有列表视图本身的wxEVT_SIZE
处理程序,它可以根据需要调整其列的大小。
您展示的代码中的第二个问题更糟:您将wxListView
的所有权交给unique_ptr<>
。除非你稍后调用release()
,否则这是非常错误的:所有GUI元素都归wxWidgets所有,并且将被它删除。您需要使用原始指针,或者,如果您愿意,可以使用非拥有智能指针类型(observer_ptr<>
(来表示程序中的所有wxWindow
派生对象(但这也适用于大小器,基本上也适用于您"提供"给框架的任何内容由它管理(。
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何按另一个向量的方向调整一个向量?
- 使用大小调整大小调整 wxListView 的大小
- 调整大小和复制哈希表数组中的元素
- 具有调整对齐方式的类型定义