免费个人自助建站做建材网站怎么做

张小明 2026/3/2 21:26:06
免费个人自助建站,做建材网站怎么做,北京网站优化服务商,贵港市城乡住房建设厅网站继上一篇【wxWidgest教程】界面布局#xff1a;自动布局之后#xff0c;本篇将进入介绍界面布局器wxSizer的使用方法。wxWidgets教程完整目录 调整器使用的布局算法与其他GUI工具包#xff08;如Java的AWT、GTK工具包或Qt工具包#xff09;中的布局系统几乎相同。它基…继上一篇【wxWidgest教程】界面布局自动布局之后本篇将进入介绍界面布局器wxSizer的使用方法。wxWidgets教程完整目录调整器使用的布局算法与其他GUI工具包如Java的AWT、GTK工具包或Qt工具包中的布局系统几乎相同。它基于单个子窗口报告其最小所需大小以及在父窗口大小发生更改时拉伸。这通常意味着您不设置对话框的启动大小而是为对话框分配一个调整器并询问这个调整器的建议大小调整器将依次查询其子级可以是普通窗体、空白区域或其他调整器以便可以构造调整器的层次结构。使调整器非常适合在wxWidgets中使用的原因是每个控件都报告自己的最小大小并且算法可以处理不同平台上字体大小或不同窗口对话框项大小的差异而不会出现问题。例如如果标准字体以及Linux/GTK小部件的总体设计需要比Windows上更多的空间那么Linux/GTK上的初始对话框大小将自动比Windows上的大。调整器同时也是一类容器用于布局并包含子控件。使用wxWindow::Show()方法可以像隐藏任何控件一样隐藏大小调整器中包含的控件。不过wxSizer还提供了一个单独的方法可以告诉调整器在其大小计算中不要考虑该控件。调用boolShow(wxWindow*window,boolshowtrue,boolrecursivefalse ),然后必须调用调整器上的void wxSizer::Layout()来强制更新。这在隐藏部分窗口时很有用因为您可以避免从调整器中删除控件以后再添加它们仅wxBoxSizer和wxFlexGridSizer支持该功能。一、一维布局一wxBoxSizerwxBoxSizer基于这样一个认识即窗口通常以非常简单的基本几何形式布局通常是一行或一列。wxBoxSizer可以垂直或水平布局其子项具体取决于其构造函数wxBoxSizer(intorient)中使用的标志是。orient为wxVERTICAL使用垂直方向排列每个子项都可以居中、右对齐或左对齐。相应地orient为wxHORIZONTAL水平方向排列每个子项都可以居中、在底部对齐或在顶部对齐。拉伸因子用于主方向确定子项水平或垂拉伸的程度。下面的示例演示wxBoxSizer的使用例子同时使用了两种标志设置方式。MyFrame::MyFrame(wxWindowID id,const wxString title,const wxPoint pos, const wxSize size ,long style , const wxString name):wxFrame(NULL,id,title,pos,size,style,name){ //ctor wxSizerFlags sizerFlag; sizerFlag.Border(wxALL,1).Proportion(1).Expand(); wxBoxSizer* outBoxnew wxBoxSizer(wxVERTICAL); wxBoxSizer* hBox1new wxBoxSizer(wxHORIZONTAL); hBox1-Add(new wxButton(this,wxID_ANY,Test Button 1),sizerFlag); hBox1-Add(new wxButton(this,wxID_ANY,Test Button 2),1,wxEXPAND|wxALL); wxBoxSizer* hBox2new wxBoxSizer(wxHORIZONTAL); hBox2-Add(new wxTextCtrl(this,wxID_ANY,hbox2 text box1, wxDefaultPosition,wxDefaultSize, wxTE_MULTILINE),sizerFlag); hBox2-Add(new wxTextCtrl(this,wxID_ANY,hbox2 text box2, wxDefaultPosition,wxDefaultSize, wxTE_MULTILINE),2,wxEXPAND|wxALL); hBox2-Add(new wxTextCtrl(this,wxID_ANY,hbox2 text box3, wxDefaultPosition,wxDefaultSize, wxTE_MULTILINE),1,wxEXPAND|wxALL); outBox-Add(hBox1,sizerFlag); outBox-Add(hBox2,wxSizerFlags(1).Expand().Border(wxALL)); SetSizerAndFit(outBox); }二wxStaticBoxSizerwxStaticBoxSizer与wxBoxSizer相同但由一个静态框包围。下面是一个示例MyFrame::MyFrame(wxWindowID id,const wxString title):wxFrame(NULL,id,title){ //ctor wxBoxSizer *topSizernew wxBoxSizer(wxVERTICAL); wxStaticBoxSizer* sizer1new wxStaticBoxSizer(wxHORIZONTAL,this,wxStaticBoxSizer); sizer1-Add(new wxCheckBox(this,wxID_ANY,option 1),wxALL|wxEXPAND); sizer1-Add(new wxCheckBox(this,wxID_ANY,option 2),wxALL|wxEXPAND); sizer1-Add(new wxCheckBox(this,wxID_ANY,option 3),wxALL|wxEXPAND); sizer1-Add(new wxCheckBox(this,wxID_ANY,option 4),wxALL|wxEXPAND); wxStaticBoxSizer* sizer2new wxStaticBoxSizer(wxHORIZONTAL,this,wxStaticBoxSizer); sizer2-Add(new wxCheckBox(this,wxID_ANY,option 1),wxALL|wxEXPAND); sizer2-Add(new wxCheckBox(this,wxID_ANY,option 2),wxALL|wxEXPAND); sizer2-Add(new wxCheckBox(this,wxID_ANY,option 3),wxALL|wxEXPAND); sizer2-Add(new wxCheckBox(this,wxID_ANY,option 4),wxALL|wxEXPAND); topSizer-Add(sizer1,wxSizerFlags(1).Expand().Border(wxALL)); topSizer-Add(sizer2,wxSizerFlags(1).Expand().Border(wxALL)); SetSizerAndFit(topSizer); }三wxWrapSizer一个wxWrapSizer将它的子项排成一行就像wxBoxSizer一样只要在主方向有可用的空间不同的是当空间占满后wxWrapSizer将在次方向上添加新行或列。二、二维布局一wxGridSizerwxGridSizer是一个二维的调整器。所有子项都被赋予相同的大小其大小与最大子项所需的最小大小相同。在本例中是左下边框中的文本控件。列数或行数都是固定的如果添加了新的子项则网格大小调整器将按各自的其他方向增长MyFrame::MyFrame(wxWindowID id , const wxString title) : wxFrame( nullptr, id, title){ //ctor wxGridSizer *sizernew wxGridSizer(4,3,wxSize(1,1)); wxString btnNames[]{0,1,2,3,4,5,6,7,8,9,,-}; for(wxString bn:btnNames){ sizer-Add(new wxButton(this,wxWindow::NewControlId(),bn), wxSizerFlags(1).Expand().Border(wxALL,1)); } SetSizerAndFit(sizer); }在wxSizer的基础上wxGridSizer增加了如下函数用于设置网络的行列数及行列之间的间隔voidSetRows(introws);voidSetCols(introws);voidSetVGap(intgap);voidSetHGap(intgap);二wxFlexGridSizer从wxGridSizer派生的另一个二维调整器。每一列的宽度和每一行的高度是根据各自最大的子级的最小要求分别计算的。此外如果为调整器分配的大小不同于它所请求的大小则可以将列和行声明为可扩展的。下面的示例显示的对话框与上面的示例相同但使用的是wxFlexGridSizerMyFrame::MyFrame(wxWindowID id ,const wxString title) : wxFrame( nullptr, id, title) { //ctor wxFlexGridSizer *sizernew wxFlexGridSizer(4,3,wxSize(1,1)); wxString btnNames[]{0,1,2,3,4, 535; 2*222444 \r\nf(n)100*n, 6,7,8,9,,-}; for(wxString bn:btnNames){ sizer-Add(new wxButton(this,wxWindow::NewControlId(),bn),wxSizerFlags(1).Expand().Border(wxALL,1)); } SetSizerAndFit(sizer); }在wxGridSizer的基础上wxFlexGridSizer增加了以下操作设置行列拉伸因子如同一维布局中子控件的proportion参数一样在二维弹性布局中行和列也具有拉伸因子当调整器中有额外的空间时该拉伸因子决定了行或列如何扩展以填充剩余空间。通过voidAddGrowableCol(size_tidx,intproportion0)和voidAddGrowableRow(size_tidx,intproportion0)函数可以设置行或列的拉伸因子。idx:从0开始计数标识行号或列号proportion:行或列的空间占比大小。如果取消空间占比则可调用voidRemoveGrowableCol(size_tidx)和voidRemoveGrowableRow(size_tidx)函数。boolIsRowGrowable(size_tidx)和boolIsColGrowable(size_tidx)可判断特定行列是否可拉伸。设置拉伸方向从wxWidgets 2.5.0开始wxFlexGridSizer还可以在一个方向上等长调整控件大小而在另一个方向则相对灵活不要求长度相等。可以调用voidSetFlexibleDirection(intdirection)设置这个相对灵活的方向参数direction可以是wxVERTICAL、wxHORIZONTAL或wxBOTH。而在另一个方向则需要调用voidSetNonFlexibleGrowMode(wxFlexSizerGrowModemode)设置子控件填充剩余空间的方式。mode可以设置为下面的值表 11wxFlexSizerGrowMode定义wxFLEX_GROWMODE_NONESizer不会在非弹性方向上拉伸其子控件wxFLEX_GROWMODE_SPECIFIEDSizer使用AddGrowtableCol()和AddGrowtableRow()设置的proportion来决定列或行的最小大小这是默认值wxFLEX_GROWMODE_ALLSizer平等地拉伸所有列或行与proportion参数无关三wxGridBagSizerwxGridBagSizer可以像wxFlexGridSizer一样在虚拟网格中布局控件。与之不同的是该调整器还能够使用wxGBPosition显式地指定以col、row为坐标指定的网格位置以及使用wxGBSpan指定子控件占用的行数、列数类似于HTMLtable中的colspan和rowspan属性。该调整器的子项添加操作与其父类不同wxSizerItem*Add(wxWindow*window,const wxGBPositionpos,const wxGBSpanspanwxDefaultSpan,intflag0,intborder0,wxObject*userDataNULL);三、总结本文介绍了wxWidgets中wxSizer布局器的使用方法。wxSizer采用基于控件最小大小和拉伸因子的布局算法支持跨平台自适应。文章详细讲解了一维布局器(wxBoxSizer、wxStaticBoxSizer、wxWrapSizer)和二维布局器(wxGridSizer、wxFlexGridSizer、wxGridBagSizer)的特点及使用场景。重点说明了弹性布局中的行列拉伸因子设置、控件隐藏方法等实用功能并通过代码示例展示了各类布局器的实际应用。还有一些界面布局的高级用法如标准布局、弹簧等后续将进一步讨论。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

江西求做网站html5浏览器

StyleGAN2数据集制作完全指南:从零开始构建高质量训练数据 【免费下载链接】stylegan2 StyleGAN2 - Official TensorFlow Implementation 项目地址: https://gitcode.com/gh_mirrors/st/stylegan2 你知道吗?在AI图像生成领域,数据质量…

张小明 2026/1/12 12:42:56 网站建设

网站页面由什么构成极简 网站模板

计算机毕业设计springboot基于JAVA的作业管理系统r14735cq (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。高校日常教学中,作业依旧是检验学生掌握程度、巩固知识点的…

张小明 2026/1/8 1:22:06 网站建设

网站设计规划书怎么写网站首屏高度

在人工智能代码生成领域,模型规模与训练成本之间的矛盾长期制约着技术发展。近日,一项融合多种前沿优化技术的研究成果引发行业广泛关注——科研团队通过创新性地整合模型剪枝、知识蒸馏与细粒度合并等技术手段,成功将23B参数宽MoE架构代码续…

张小明 2026/1/11 6:30:52 网站建设

哈尔滨如何做网站推广优化wordpress另一更新进行中

你有没有想过,当你在网上购物、登录邮箱或者刷社交媒体时,你的数据是如何保持安全的?答案就是 HTTPS!它是 HTTP 的安全升级版,全称是 HyperText Transfer Protocol Secure(超文本传输安全协议)。通过加密技术和身份验证,HTTPS 确保你的信息不会被黑客偷窥或篡改。 上一…

张小明 2026/1/12 11:35:40 网站建设

能看各种网站的浏览器源码出售网站怎么做

在如今人工智能迈向AGI(通用人工智能)的时代,GPT-5作为OpenAI里程碑式的集成模型,凭借其融合大语言模型与高级推理能力的核心优势,在数学、编程、医疗、金融等多个领域实现性能飞跃,成为开发者和企业创新应…

张小明 2026/1/8 1:22:08 网站建设

网站上的彩票走势图是怎么做的即墨网站开发

MATLAB环境下COCO数据集高效使用指南 【免费下载链接】cocoapi COCO API - Dataset http://cocodataset.org/ 项目地址: https://gitcode.com/gh_mirrors/co/cocoapi 在计算机视觉研究领域,COCO数据集已成为评估目标检测、实例分割等算法性能的标准基准。然…

张小明 2026/1/8 1:22:10 网站建设