• 10419阅读
  • 6回复

QHeaderView 怎么设置点击背景? [复制链接]

上一主题 下一主题
离线welliam
 

只看楼主 倒序阅读 楼主  发表于: 2014-03-18
整个是一个QTreeWidget,使用qss进行美化。
如图1中红框标记,点击后标题栏背景色变化。用qss的话怎么写?
我试了 QHeaderView::section:checked{
background-color:red;
} ,但是标题的背景全部变成了红色,如图2。

---------------------------------------------------------------------------------
还有个问题,qss怎么设置那个显示排序方式的箭头 位置?我想把那个箭头显示在标题文字的旁边。
下面是我的qss代码,设置margin-top或者padding的效果都是箭头变小,但是位置没变。
QHeaderView::up-arrow{  
margin-top:1px;    
image:url(./image/up-arrow.png);}

----------------------------------3.26 再次编辑------------------------------------------
文档里是使用QHeaderView::section:checked或者selected,可是我试了没效果,版本是5.0.1。谷歌发现在早一点的版本是有bug,这里 https://bugreports.qt-project.org/browse/QTBUG-23689  。还有其他方法吗?
与之相似的QHeaderView::section:hover、press可以正确设置。

我有个想法是利用qheaderview的sectionClicked信号,实现点击之后背景色变化,不过还有待验证。

只看该作者 1楼 发表于: 2014-03-18
QHeaderView{
    border:none;
    min-height:30px;
}
QHeaderView::section{
    border:1px solid lightgray;
}
QHeaderView::section:hover{
    background:rgb(235, 240, 245);    
}
QHeaderView::section:pressed{
    background:red;    
}
博客地址:https://waleon.blog.csdn.net
微信公众号:高效程序员
QQ 群:242790253
微信群:加微信(iwaleon),邀请入群。

承接各种 C++/Qt/QML 项目,专业的团队,一流的服务,不二的选择!
离线welliam

只看该作者 2楼 发表于: 2014-03-18
回 奋斗ing孩子 的帖子
奋斗ing孩子:
QHeaderView{
    border:none;
    min-height:30px;
}
QHeaderView::section{
.......

我试了,点击背景色变化还是不行,hover 属性这个我知道。
可能我没有描述清楚:点击标题栏会排序,同时点击的那列标题会出现个三角形的标记QHeaderView::up-arrow
我的疑问就是这时标题栏背景怎么才能变化。
我把握的qss贴上

QTreeWidget {

    background:rgb(26,26,26);
    color:white;
    font-size:10pt;
    font-weight:480;
    text-align:center;
    border:none;
}

QHeaderView::section{
    border:none;
}

QHeaderView::section{
    height:21px;
    font-size:10pt;
    font-weight:480;

    border:1px solid lighgray;
}

QHeaderView::section:hover{
    background:blue;
}
QHeaderView::section:pressed{
    background:red;
}
QHeaderView::up-arrow{
    margin-right: 1px;
    image:url(./image/up-arrow.png);
}
QHeaderView::down-arrow{
    margin-right: 1px;
    image:url(./image/down-arrow.png);
}

QTreeWidget::item {
    height:21px;
    border:none;
}

QTreeView::item:selected:active{
    background:rgb(249,160,27);
}

QTreeView::item:selected:!active {
    color:white;
    background: rgb(249,160,27);
    border:none;
}

只看该作者 3楼 发表于: 2014-03-18
没明白你的意思!
博客地址:https://waleon.blog.csdn.net
微信公众号:高效程序员
QQ 群:242790253
微信群:加微信(iwaleon),邀请入群。

承接各种 C++/Qt/QML 项目,专业的团队,一流的服务,不二的选择!
离线welliam

只看该作者 4楼 发表于: 2014-03-18
回 奋斗ing孩子 的帖子
奋斗ing孩子:
没明白你的意思!

额。。。
我多截几张图你看看
三张图对比下,我鼠标点到标题,背景色就会变化。其实就是模仿Amazon Cloud Player做一个界面出来。
离线welliam

只看该作者 5楼 发表于: 2014-03-19
回 奋斗ing孩子 的帖子
奋斗ing孩子:QHeaderView{
    border:none;
    min-height:30px;
}
QHeaderView::section{
....... (2014-03-18 16:41)


本来我看文档是使用QHeaderView::section:checked或者selected,可是没效果。谷歌发现在早一点的版本是有bug,这里 https://bugreports.qt-project.org/browse/QTBUG-23689  。还有其他方法吗?
---------------------------------------------------------------------------------


离线welliam

只看该作者 6楼 发表于: 2014-03-26
好几天了,还有人有什么思路吗
快速回复
限100 字节
 
上一个 下一个