大家都知道,用UI做起界面来非常方便,但是如果我们不熟练他的操作的话,做起来也会有不少布局的麻烦,

所以,我打算写一篇文章来记录自己参考大牛用代码写界面的文章,感谢百度,感谢各位QT大牛的帮助。

所谓代码布局,无非用到的是qss样式表,它与css样式表的语法形式差不多,下面废话不多说,直接进入正题。

由于,QT自带的窗口,不是那么美观,所以我之前写过一篇,制作无边框界面,但是没有涉及到美化,具体参考

http://www.cnblogs.com/Ten10/p/Ten16.html,然后发现,无边框之后,按钮也因为边框的消失,而消失了

所以我们必须为我们的界面装上按钮,在UI里面拖一个组合框,里面放入两个按钮,把他们改成 - 和 x 的形式,当然

你也可以自己用代码写出来,博主为了方便,直接用的UI,如图

              外面套的是一个GroupBox,他们的关系如图所示。

然后我们用以下代码装上按钮,我们的按钮是要放到右上角的,我们利用组合框来设置closebtn和minbtn的大小。

装上了之后,就是两个普通的黑按钮,没有任何特效。为了加上如图特效,就可以用到界面美化的qss了。

     这里必须提到一下button有两个参数,一个是hover(鼠标浮过),一个是press(鼠标按下)

要想做到以上特效,我们必须建立一个qss文件,初始化按钮为白色。

QPushButton#closebtn,QPushButton#minbtn                             类#作用对象            
{                                                                                            {
border: 0px;                                                                              属性
color: rgb(255, 255, 255);                                                         }
}

这里面我们把边框设置成0,颜色设置为白色,语法简单吧,当然,如果我们作用两个对象,可以用逗号隔开,如果我们作用所有的

按钮对象,可以直接 QPushButton{ 属性 },当然一般不建议使用。然后

QPushButton#minbtn:hover                                                   鼠标浮过minbtn  
{
background: rgba(30,144,255,0.7);                                        就变成蓝色
}

QPushButton#closebtn:hover                                                 鼠标浮过closebtn 
{
background: #FF3030;                                                          这是红色
}

加载完qss文件就OK啦

当然按下这个按钮的时候就是QPushButton#closebtn:pressed{  属性  } 可以自己定义自己想要的属性。

然后加载自己要的背景图片到对应的区域,方式雷同QGroupBox#对象{ border-image: url(:/pic/你的图片.png); }

或者作用于其他类的某个对象,当然,这些只能改变这些对象的属性,不能改变他的位置,但是这已经足够了,位置的话

需要你自己在UI里面布局,或者在代码里面布局,这里我就不多说了,用qss可以解决自己不熟悉UI而导致的一些弊端。

作者:Ten10

此文章属于博主原创,转载请注明出处

qt 5 界面美化的更多相关文章

  1. Qt之界面美化输入框(使用QSS确实非同凡响)

    我们先看下酷狗音乐的输入框效果图: 这里我们需要实现在输入框里面添加一个按钮(多个也一样),并且提供一个默认时候的文字..直接上代码好了. QHBoxLayout *lay = new QHBoxLa ...

  2. 用Qt写软件系列三:一个简单的系统工具之界面美化

    前言 在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出.进程子模块信息等功能,留到后面再来慢慢实现.这一篇来讲述如何对主界面进行个性化的定制.Qt库提供的只是最基本的组件功能,使用这些组件开 ...

  3. 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计

    本文讲一讲界面设计,作品要面向用户,界面设计的好坏直接影响到用户的体验.现在的窗口设计基本都是扁平化的,你可以从window XP与window 8的窗口可以明显感觉出来.当然除了窗口本身的效果,窗口 ...

  4. QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL

    QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1   C语言程序设计高级实用速成课程 基础+进阶+自学 课程2   C语言程序设计Windows GDI图形绘 ...

  5. 使用Qss设置QT程序界面的样式和皮肤

    1         使用Qss设置QT程序界面的样式和皮肤 1.1  Qss的功能 Qt程序界面中控件的背景图片.大小.字体颜色.字体类型.按钮状态变化等属性可以通过Qss文件来设置,美化UI界面.实 ...

  6. 快速全面了解QT软件界面开发技术

    快速全面了解QT软件界面开发技术     目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...

  7. C# winform 界面美化技巧(扁平化设计)

    关于C#界面美化的一些小技巧 在不使用第三方控件如 IrisSkin 的前提下,依然可以对winform做出让人眼前一亮的美化 首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winf ...

  8. 复利计算器(4)——jQuery界面美化、自动补全

    一.分工 这次终于可以跟小伙伴合作了,经过讨论,我负责界面的美化和输入框自动补全,小伙伴擅长安卓,于是将复利计算器弄成app的任务就交给了小伙伴.为了我们两人团队,我们都好奋斗哈哈哈!! 二.界面美化 ...

  9. MFC/VC++ UI界面美化技术

    1.     工具: 1.1设备环境类: Windows下的绘图操作说到底就是DC操作.DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它. ...

随机推荐

  1. objc_msgSend消息传递学习笔记 – 对象方法消息传递流程

    在Effective Objective-C 2.0 – 52 Specific Ways to Improve Your iOS and OS X Programs一书中,tip 11主要讲述了Ob ...

  2. Swift和OC相互调

    在项目中不免会有多中语言开发, 不说别的就我个人而言, 之前一直都是用 OC 写的代码, 封装很多工具类, 而苹果新出来 Swift , 现在项目在向 Swift 过渡, 或者新项目是 Swift , ...

  3. chrome,firefox

    chrome开发者工具 firefox插件httpfox

  4. 将CGPoint、CGSize、CGRect等放进数组的方法

    在oc中,数组中只能存放NSObject类型的数据,所以如果将CGPoint.CGSize.CGRect这些数据存到数组中,我们需要将他们转换为对象类型才可以, 可以借助NSValue,它是用来将基本 ...

  5. 这五个题你懂了javascript你就入门了

    1. if (!("a" in window)) { var a = 1; } alert(a); 阅读代码:如果window不包含属性a,就声明一个变量a,然后赋值为1,最后弹出 ...

  6. JFace中的表格型树TableTreeViewer

    表格型树是用TableTreeViewer来实现,自从SWT下的TableTree被废弃之后,其扩展TableTreeViewer也成了鸡肋,不再被建议使用,既然Tree可以实现表格型树,那么其扩展T ...

  7. 关于SWT/JFace中其他常用的事件

    1.addSelectionListener:这个监听器最常用. 这个addSelectionListener是一个方法,addSelectionListener(SelectionListener ...

  8. Python(2.7.6) ConfigParser - 读写配置文件

    Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件. 配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 opt ...

  9. ubuntu 16.04 chrome flash player 过期

    今天手贱更新了系统,发现chrome flash插件过期了 解决方法: 使用全局代理打开 chrome $: google-chrome --proxy-server="socks5://1 ...

  10. extjs类的生命周期

    只要extjs对应的类文件加载了,那么该类就可以构造对象或者用来继承了.