Qt treewidget样式的自定义(转)
这个treewidget样式真是写得让人心碎,主因是那个天杀的表头,真是块古里古怪的硬骨头,令人抓狂,一直找不到给表头设定背景图的方法,让我一度决定弃用tree。
后来表头的属性找到了,下拉条又找不到。第一次接触stylesheet,完全是边做边学,不知所谓,又不想不做,默认的样式我就是看不过眼,处女座的人就是比较神经质。
网上关于treewidget的样式介绍少之又少,不知道是不是因为大牛们都采用了treeview等其他方法去做了,或者说是tree太简单,只有我那么弱智还要去网上搜。
总之,经过2天坚持不懈的泣血努力,总算是把这个控件的样式完完全全换掉了。
特此记录,以资鼓励。
——————————————————————————————
树形列表控件,主要是对“表头”“列表背景” “下拉条”“鼠标扫动”做处理,以达到自定义效果。
不废话了,直接上代码。
m_QTreeWidget->setStyleSheet("
//列表背景
QTreeWidget{background-image:url(./image/treelistbk.jpg);}\
//每一项的身高 鼠标扫过 按下的变色
QTreeWidget::item{height:40px;}\
QTreeWidget::item:hover{}\
//表头背景 表头身高
QHeaderView::section{border-image: url(./image/header-test.png); height:40px;} "
);
列表的表头,给图片背景!天知道居然要用Qheaderview!!!天杀的!!!
//下拉条的样式设置 具体内容 参考上一篇
http://blog.sina.com.cn/s/blog_8a621fc80102vizs.html
m_QTreeWidget->verticalScrollBar()->setStyleSheet("");
m_QTreeWidget->horizontalScrollBar()->setStyleSheet("");
完毕。其实很简单吧。
但是却花了很长时间。
俺写的第一个stylesheet。呼呼。虽浪费2天时间,人都快疯掉,但好歹最终成功了。
也算是入门了。
————————————————————————————
以下是我的其他设置,作为一个初学者,都这两天慢慢琢磨的,留给自己看。
//字体
m_pQTreeWidget->setFont(QFont("Helvetica"));
//表头字体 居中 (表内项目的字体居中要去add item的地方进行设置,目前没找到别的好办法。。。嘤嘤嘤。。。。)
m_pQTreeWidget->headerItem()->setFont(0,QFont("Helvetica",18,QFont::Bold));
m_pQTreeWidget->headerItem()->setFont(1,QFont("Helvetica",18,QFont::Bold));
m_pQTreeWidget->headerItem()->setTextAlignment(0,Qt::AlignHCenter | Qt::AlignVCenter);
m_pQTreeWidget->headerItem()->setTextAlignment(1,Qt::AlignHCenter
Qt::AlignVCenter);
//表头不许移动,不许点击,不许排序。。。。哼哼哈。在我地盘的,你就得听我的!
setHeaderMovable(false);
m_pQTreeWidget->header()->setClickable(false);
m_pQTreeWidget->setFrameShape(QFrame::NoFrame); //设置无边框这样才可以自定义treewidget背景图
//表头可点击,点击后可排序
#if 0
//setHeaderHidden(true); //去掉表头
m_pQTreeWidget->header()->setClickable(true); //点击头自动排序
m_pQTreeWidget->setSortingEnabled(true); //用来设置是否可以排序
m_pQTreeWidget->sortItems(0, Qt::AscendingOrder); //id属性,即第0列,升序排列
#endif
----------------------------------------------------------------------
by the way,整理代码的时候发现了,有个很变态的地方。
当这一句setFrameShape(QFrame::NoFrame);若写在设置横向滚动条的样式之前,则横向滚动条就出不来了,横向滚动条本来是自动出现的。
(虽然我本来就不想要它出现。但我觉得哦,也许样式应该写在最前面。)
http://blog.sina.com.cn/s/blog_8a621fc80102vj09.html
Qt treewidget样式的自定义(转)的更多相关文章
- WPF自定义控件与样式(2)-自定义按钮FButton
一.前言.效果图 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 还是先看看效果 ...
- WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 自定义 ...
- Qt 鼠标样式特效探索样例(一)——利用时间器调用QWidget.move()函数
Qt 鼠标样式特效探索样例(一) 心血来潮,突然想在Qt里玩一把鼠标样式,想到在浏览网页时,经常看到漂亮的鼠标动画,于是今天摸索着乱写个粗糙的demo,来满足自己的好奇心. 效果图 方案要 ...
- WPF 自定义ComboBox样式,自定义多选控件
原文:WPF 自定义ComboBox样式,自定义多选控件 一.ComboBox基本样式 ComboBox有两种状态,可编辑和不可编辑状态.通过设置IsEditable属性可以切换控件状态. 先看基本样 ...
- android中样式和自定义button样式
1)自定义button样式 一.采用图片方式 首先新建Android XML文件,类型选Drawable,根结点选selector,自定义一个文件名. 随后,开发环境自动在新建的文件里加了select ...
- Qt之界面(自定义标题栏、无边框、可移动、缩放)
效果 自定义标题栏 titleBar.h #ifndef TITLEBAR_H #define TITLEBAR_H #include <QLabel> #include <QPus ...
- C/C++ Qt TreeWidget 嵌套节点操作技巧
在上一篇博文<C/C++ Qt TreeWidget 单层树形组件应用>中给大家演示了如何使用TreeWidget组件创建单层树形结构,并给这个树形组件增加了右键菜单功能,接下来将继续延申 ...
- Qt StyleSheet样式表实例(转)
QT论坛看到的,收藏一下! 在涉及到Qt 美工的时候首先需要掌握CSS 级联样式表. 下面将通过几个例子来介绍一下怎样使用Qt中的部件类型设计.自定义的前台背景与后台背景的颜色: 如果需要一个文本编辑 ...
- C/C++ Qt TreeWidget 单层树形组件应用
TreeWidget 目录树组件,该组件适用于创建和管理目录树结构,在开发中我们经常会把它当作一个升级版的ListView组件使用,因为ListView每次只能显示一列数据集,而使用TableWidg ...
随机推荐
- oaf 动态创建table vo (转)
原文地址:如何动态创建table 需求: 因为系统中有几千个QA plan 但是不能手动创建几千个 质量收集页面所有需要根据 不同的plan 动态创建对应的 质量收集页面. 但是创建tabel 都要绑 ...
- Eclipse properties文件编辑插件
安装 Properties Editor 步骤:help--->Install New Software...---> 名称:Properties Editor URL:http://pr ...
- httpclient 连接参数
http.socket.timeout(读取超时) 套接字毫秒级超时时间(SO_TIMEOUT),这就是等待数据,换句话说,在两个连续的数据包之间最大的闲置时间. 如果超时是0表示无限大的超时时间,即 ...
- learning armbian steps(2) ----- armbian 镜像编译
参考:https://docs.armbian.com/Developer-Guide_Build-Preparation/ 通过如下指令进行编译: apt-get -y -qq install gi ...
- for each...in,for...in, for...of
一.for each ...in explanation: 该语句在对象属性的所有值上迭代指定的变量.对于每个不同的属性,执行指定的语句. 句法: for each (variable in obj ...
- HttpWebRequest HttpClient
HttpWebRequest HttpClient 简单封装使用,支持https HttpWebRequest using System; using System.Collections.Gener ...
- bzoj1008
题解: 要求有几种方案可以越狱,可以用总方案-不会越狱的方案 那么总方案就是m^n 那么考虑不会越狱的方案 显然第一个人有m中,后面都是m-1中(和前一个不一样) 答案就是m^n-m*(m-1)^(n ...
- 工作中遇到的oracle分页查询问题及多表查询相关
在工作中,有时,我们会用到oracle分页查询.这时,就需要先了解oracle的rownum.rowmun是oracle的伪列,只能用符号(<.<=.!=),而不能用这些符号(>,& ...
- Superset 制作图表
参考资料: http://lxw1234.com/archives/2018/03/904.htm https://wenku.baidu.com/view/49ffdf8b77eeaeaad1f34 ...
- Django(二)创建app,设置相关后台
location 最后一个文件夹名就是project名,我用了DjangoProject. Application 是自动加入的APP名字,我用了DjangoTest 1.添加APP在pycharm的 ...