treewidget设置行距和背景图片

小吥点 2014-08-18 02:30:49
最近做了一个小项目,在一个大的widget中我放了一个treewidget,treewidget中然后就显示一些信息,现在就是想把treewidget中的内容之间行距设置一下和给treewidget添加背景图片。不利用setstylesheet如何实现,求各位大神指导。
...全文
207 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小吥点 2014-08-19
  • 打赏
  • 举报
回复
引用 12 楼 u011836122 的回复:
[quote=引用 11 楼 xiaofeng6552538 的回复:] [quote=引用 9 楼 u011836122 的回复:] 你是怎么写的,肯定写的有问题!把代码贴出来! 看着——把分给我!
果然可以,太感谢了,但是为什么如果用ui->treewidget->setStyleSheet();就不行呢,这是为什么[/quote] d->treeWidget->setStyleSheet("QTreeWidget 选择器明显没有写正确! 你在treeWidget设置setStyleSheet,这就限定了范围为treeWidget,然后又用QTreeWidget做选择器,就等于是你的treeWidget里QTreeWidget,而不是你的treeWidget。 不让你用treewidget->setStyleSheet()是因为不好写选择器。[/quote] 哦 明白了 ,谢谢了 ,又学习了不少
漫舞云中影 2014-08-19
  • 打赏
  • 举报
回复
引用 11 楼 xiaofeng6552538 的回复:
[quote=引用 9 楼 u011836122 的回复:] 你是怎么写的,肯定写的有问题!把代码贴出来! 看着——把分给我!
果然可以,太感谢了,但是为什么如果用ui->treewidget->setStyleSheet();就不行呢,这是为什么[/quote] d->treeWidget->setStyleSheet("QTreeWidget 选择器明显没有写正确! 你在treeWidget设置setStyleSheet,这就限定了范围为treeWidget,然后又用QTreeWidget做选择器,就等于是你的treeWidget里QTreeWidget,而不是你的treeWidget。 不让你用treewidget->setStyleSheet()是因为不好写选择器。
小吥点 2014-08-19
  • 打赏
  • 举报
回复
引用 9 楼 u011836122 的回复:
你是怎么写的,肯定写的有问题!把代码贴出来! 看着——把分给我!

    //::item表示QTreeWidget的item
    //所有的QTreeWidget
    this->setStyleSheet("QTreeWidget{background-image: url(11.jpg);color: red;}"
                        "QTreeWidget::item{height:50px;width:50px;}");

    //#treeWidget特定的QTreeWidget
    this->setStyleSheet("#treeWidget{background-image: url(11.jpg);}"
                        "#treeWidget::item{height:50px;width:50px;}");

    //除了窗体类this指针,还可以用qApp全局对象。
    //qApp->setStyleSheet("");
    //不要使用this->ui->treeWidget->setStyleSheet来设定。
果然可以,太感谢了,但是为什么如果用ui->treewidget->setStyleSheet();就不行呢,这是为什么
小吥点 2014-08-19
  • 打赏
  • 举报
回复
引用 9 楼 u011836122 的回复:
你是怎么写的,肯定写的有问题!把代码贴出来! 看着——把分给我!

    //::item表示QTreeWidget的item
    //所有的QTreeWidget
    this->setStyleSheet("QTreeWidget{background-image: url(11.jpg);color: red;}"
                        "QTreeWidget::item{height:50px;width:50px;}");

    //#treeWidget特定的QTreeWidget
    this->setStyleSheet("#treeWidget{background-image: url(11.jpg);}"
                        "#treeWidget::item{height:50px;width:50px;}");

    //除了窗体类this指针,还可以用qApp全局对象。
    //qApp->setStyleSheet("");
    //不要使用this->ui->treeWidget->setStyleSheet来设定。
d->treeWidget->setStyleSheet("QTreeWidget{background-Image:url(S:/Dev32/FitReportPrint/image/4.jpg)};item{height:200px}"); 这是我写的代码,设置了背景图片和item的高度,但是就是只有一个有效,不知道是哪里有问题,
漫舞云中影 2014-08-18
  • 打赏
  • 举报
回复
你是怎么写的,肯定写的有问题!把代码贴出来!
看着——把分给我!

//::item表示QTreeWidget的item
//所有的QTreeWidget
this->setStyleSheet("QTreeWidget{background-image: url(11.jpg);color: red;}"
"QTreeWidget::item{height:50px;width:50px;}");

//#treeWidget特定的QTreeWidget
this->setStyleSheet("#treeWidget{background-image: url(11.jpg);}"
"#treeWidget::item{height:50px;width:50px;}");

//除了窗体类this指针,还可以用qApp全局对象。
//qApp->setStyleSheet("");
//不要使用this->ui->treeWidget->setStyleSheet来设定。


小吥点 2014-08-18
  • 打赏
  • 举报
回复
引用 7 楼 u011836122 的回复:
[quote=引用 3 楼 xiaofeng6552538 的回复:] virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 这个函数式针对没一个item设置背景的吧,我是想给整个treewidget设置背景图片。
是treewidget的绘画事件,不是treewidgetItem的绘画事件! 你要是不想继承整个类treewidget,可以用installEventFilter,然后在eventFilter里判断绘画事件进行处理。[/quote] 如果我用setStyleSheet同时对treewidget进行添加背景图片和设置行距,为什么会出现其中一个无效,
漫舞云中影 2014-08-18
  • 打赏
  • 举报
回复
引用 3 楼 xiaofeng6552538 的回复:
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 这个函数式针对没一个item设置背景的吧,我是想给整个treewidget设置背景图片。
是treewidget的绘画事件,不是treewidgetItem的绘画事件! 你要是不想继承整个类treewidget,可以用installEventFilter,然后在eventFilter里判断绘画事件进行处理。
小吥点 2014-08-18
  • 打赏
  • 举报
回复
引用 4 楼 ybjx111 的回复:
那就用2楼的方法吧,不过QPainter需要使用viewport作为参数
用setStyleSheet可以实现 但是我行距和背景图片都用setStyleSheet的话 背景图片可以显示出来,但是行距就没有效果了,现在一直在纠结这个问题
ybjx111 2014-08-18
  • 打赏
  • 举报
回复
那就用2楼的方法吧,不过QPainter需要使用viewport作为参数
小吥点 2014-08-18
  • 打赏
  • 举报
回复
引用 2 楼 ybjx111 的回复:
QItemDelegate使用这个,楼上的不对。 virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const virtual QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 这个函数式针对每一个item设置背景的吧,我是想给整个treewidget设置背景图片。
小吥点 2014-08-18
  • 打赏
  • 举报
回复
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const 这个函数式针对没一个item设置背景的吧,我是想给整个treewidget设置背景图片。
ybjx111 2014-08-18
  • 打赏
  • 举报
回复
QItemDelegate使用这个,楼上的不对。 virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const virtual QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
漫舞云中影 2014-08-18
  • 打赏
  • 举报
回复
TreeWidget的行距可以通过TreeWidgetItem的setSizeHint()来实现。 可以在Treewidget的paintEvent事件中用QPainter的drawImage()或是drawPixmap()或是drawPicture()实现,将图片画上去。

16,199

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧