QML TableView修改单个Item的颜色

31 篇文章 11 订阅

QML 的表格TableView可以实现漂亮的表格效果,当然修改当个item或者整行的字体颜色或者背景功能也是必须的。

此例子实现单个item的字体颜色修改,背景色也是如此。效果如下:

 

具体代码如下:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    ListModel {
          id: libraryModel
          ListElement {
              title: "A Masterpiece"
              author: "-Gabriel"
          }
          ListElement {
              title: "Brilliance"
              author: "-Jens"
          }
          ListElement {
              title: "Outstanding"
              author: "-Frederik"
          }
      }

    TableView {
        width: 500;
        height: 400;

         TableViewColumn {
             role: "title"
             title: "Title"
             width: 100
         }
         TableViewColumn {
             role: "author"
             title: "Author"
             width: 200
         }
         model: libraryModel

        rowDelegate : Rectangle{
            height: 40;
        }

         itemDelegate: Rectangle{
             //color: "#052641"
             border.width: 1
             height: 30;
             color : styleData.selected ? "#dd00498C": "#052641"
             Text {
                  //anchors.centerIn : parent
                  anchors.verticalCenter: parent.verticalCenter
                  x : 10;
                  anchors.leftMargin: 5
                  color : changeColor(styleData.value) ? "red": "white" //重点
                  text: styleData.value

                  font.pixelSize: parent.height*0.5
                  function changeColor( value )
                     {
                        var sss = value.indexOf("-");
                        if (value.indexOf("-")>-1)
                         return true;
                        else
                            return false;
                     }
              }
         }
     }

}

可以在属性后面带一个函数,此函数返回属性的值即可

上面的例子可以这样。color的属性是取决来changeColor的返回值。

当然你也可以直接写一个返回的color的值

color: getBackColor(styleData.row);
function getBackColor(row)
            {
                if(row%5 == 1) return "#ddff00";
                if(row%5 == 2) return "#fdff00";
                if(row%5 == 3) return "#ffff00";
                if(row%5 == 4) return "#ff00ff";
            }

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值