游园记
qt如何设计好布局和漂亮的界⾯。自我介绍300字左右
2020博客之星年度总评选进⾏中:请为74号的狗⼦投上宝贵的⼀票!
我的投票地址:
⽂章⽬录
前⾔
曾⼏何时,我们都在⿊框框下度过,我们受够了被⿊框框⽀配的恐惧,想要跳出去,去看看外⾯,我们听够了类似于界⾯只是⽪肤,背后的代码才是王道的话语,当你觉得⿊框框已经满⾜不了你的时候,我觉得,你是时候做出⼀些改变了。如果你是学习C++的,我想qt可以作为你进⼊界⾯的⼀条选择,这篇⽂章,我们不讲函数,不讲类,总之就是不讲代码,我们来讲讲代码之外,聊⼀聊关于怎么布局,怎么⽤qt做出⼀个漂亮的界⾯❤ 。
我在⼀篇讲布局博⽂下⾯看到这样⼀句评论:为什么⾮要布局,直接⾃⼰摆不是更好吗?我相信很多刚接触布局的同学,都有这种想法,当然,当初的我和你们拥有⼀样的想法,但是现在,这种想法我不敢再有。之所以会说出这句话,要么是刚接触界⾯,要么是随⼿点了进来,阿巴阿巴看完评论了⼀句。刚开始接触界⾯,布局确实不是那么重要,我们的软件(都称不上是软件,就是⼀个空壳⼦)⼀共也没⼏个组件,两个按钮?三个⽂本框?刚接触的时候,你是否考虑过软件⼤⼩随意变化的问题,你是否考虑过后期添加组件,随着我们的软件越来越庞⼤,让组件⾃动分配空间显的尤为重要。❤
分为两⼤板块:布局和Qt版CSS,基础在前,进阶在后,前⾯讲布局组件以及css语法等等,后⾯进⾏实践,并就遇到的问题进⾏解决,看不完,建议先收藏起来,⽇后根据需求查看。
使⽤的是Qt5.10.0版本,相关更详细的使⽤⽅法可点击下⽅官⽅⽂档查看❤ 创作不易,您的点赞是我创造的动⼒。❤
⼀.布局相关组件介绍(☀ )
与布局有关的就是上图红⾊⽅块所标注的三项,下⾯依次做说明。
1.Layouts(布局)
Layouts这个词,⼀定不陌⽣,布局的意思,在第⼀个红框框⾥⾯有⼀共有4种布局类型,分别是Vertical Layouts(垂直布局),Horizontal Layouts(⽔平布局),Grid Layouts(⽹络布局),Form Layouts(窗体布局)。
Vertical Layouts(垂直布局)
使⽤了垂直布局,组件⾃动在垂直⽅向上分布。
Horizontal Layouts(⽔平布局)裁判员
使⽤了⽔平布局,组件⾃动在⽔平⽅向上分布。
Grid Layouts(⽹络布局)
使⽤了⽔平布局,组件⾃动在⽹格⽅向上分布。
Form Layouts(窗体布局)
和⽹格布局类似,但只有最右侧的⼀列⽹格会改变⼤⼩。
2.Spacers(空间间隔器/弹簧)
空间间隔器有两种,⼀种是⽔平的,另⼀种是垂直的。
Spacer有四个属性:
spacerName(名字)
orientation(决定spacer是⽔平间隔或垂直间隔)
sizeType(单独说)
sizeHint(该值是组件作为在布局管理器中部件的缺省⼤⼩,既建议值,也是缺省值,其他组件该值不可修改,但Spacer组件可修改,组件实际⼤⼩受部件的⼤⼩策略、sizeHint以及布局中其他部件的影响)
志公禅师四个属性中,sizeType应该拿出来讲⼀讲:
sizeType属性说明值说明
Fixed0固定值策略: Qwidget.sizeHint()对应的缺省⼤⼩就是部件的固定不变⼤⼩,因此部件不能放
⼤也不能缩⼩。
Minimum GrowFlag 指定最⼩值策略: Qwidget. sizeHint()对应的缺省⼤⼩是最⼩值,不能调整部件⼤⼩到⽐缺省⼤⼩更⼩的尺⼨,并且该值应该⾜够满⾜部件的展现。部件允许扩展,但是Qt并不建议扩
展(例如:⽔平⽅向上的按钮)。
忆江南的诗Maximum ShrinkFlag 指定最⼤值策略: Qwidget. sizeHint()对应的缺省⼤⼩是最⼤值,假如其它部件需要空间并且不会破坏该部件,那么该部件允许被缩⼩(例如:-个分割线)。
Perferred GrowFlag|ShrinkFlag ⾸选项策略: Qwidget sizeHint()对应的缺省⼤⼩是最佳效果,部件允许放⼤或缩⼩,但不建议扩展⽐sizeHint()⼤,该策略是缺省策略。
Expanding GrowFlag|ShrinkFlag|ExpandFlag 扩展策略: Qwidget. sizeHint()对应的缺省⼤⼩是合理的⼤⼩,但部件允许缩⼩并且可⽤。部件可以利⽤额外的空间,因此它将会得到尽可能多的空间(例如:⽔平⽅向上的滑块)。
MinimumExpanding GrowFlag|ExpandFlag 最⼩可扩展策略: Qwidget. sizeHint()对应的缺省⼤⼩是最⼩值,并且⼤⼩⾜够。部件允许使⽤额外空间,因此它将会得到尽可能多的空间(例如:⽔平⽅向上的滑块)。
Ignored ShrinkFlag|GrowFlag|IgnoreFlag Qwidget.sizeHint()对应的缺省⼤⼩将会被忽略,部件将会获取尽可能多的空间。
不出意外的话,新⼈可能看不懂这个说明,⽤通俗易懂的话说就是这个样⼦的:
Fixed:控件不能放⼤或者缩⼩,控件的⼤⼩就是它的sizeHint。
Minimum:控件的sizeHint为控件的最⼩尺⼨。控件不能⼩于这个sizeHint,但是可以放⼤。
Maximum:控件的sizeHint为控件的最⼤尺⼨,控件不能放⼤,但是可以缩⼩到它的最⼩的允许尺⼨。
Preferred:控件的sizeHint是它的sizeHint,但是可以放⼤或者缩⼩。番茄牛肉意面
Expandint:控件可以⾃⾏增⼤或者缩⼩。
MinimumExpanding:控件的sizeHint是它的sizeHint,但是可以使⽤额外的空间,也就是它会尽可能得到更多的空间。
Ignored:控件的sizeHint不起作⽤,它会尽可能得到更多的空间。
所以看到这⾥,千万不要再说你的Spacer不能设置⼤⼩。
3.UI设计器⼯具栏
前四个与我们本⽂关系不⼤,不与介绍,我们来看后⾯剩下的。
Lay Out Horizontally:将窗体上所选组件⽔平布局
Lay Out Vertically:将窗体上所选组件垂直布局
Lay Out Horizontally in splitter:将窗体上所选组件⽤⼀个分割条进⾏⽔平分割布局
Lay Out Vertically in splitter:将窗体上所选组件⽤⼀个分割条进⾏垂直分割布局
Lay Out in a Form Layout:将窗体上所选组件窗体布局
Lay Out in a Grid:将窗体上所选组件⽹格布局
Break Layout:解除窗体上所选组件的布局,也就是打破布局。
Adjust Size:⾃动调整所选组件的⼤⼩。
这时候,你可能要问这⾥的布局和刚才的布局⼀样吗,是⼀样的,在不过在这⾥,可以更快速的对组件进⾏布局,⽐如下⾯这样:
分割布局器
⾄于分割布局器,默认情况下是不可⽤,使⽤⽅法是先选中要放⼊QSplitter中的控件,此时分裂布局图标变亮,然后选择⽔平或垂直布局器。
使⽤属性中的handleWidth可调节组件之间的间距。
属性中的opaqueResize默认情况下(打勾),使⽤⿏标拖动分割⼦窗⼝间的边界时,⼦窗⼝会动态的改变其⼤⼩。然⽽,如果希望在松开⿏标时才改变其⼤⼩,可以设置下⾯的参数,取消其勾选状态即可,效果如下(左⾯打勾):
圣诞游戏
关于布局相关的组件或者⼯具就写到这⾥,下⾯是⼀些我做的例⼦。
⼆.Qt样式表QSS(☀ )
Qt⾃带⼀个纯天然的⽪肤功能QSS,也就是Qt版CSS。就算没有美⼯你也能轻松做出酷炫的界⾯,完整的官⽅⽂档可查看⽂字开头蓝⾊链接,这⾥仅常⽤的语法做⼀个引⼊。
西藏旅游攻略1.样式表语法