qt model 中的角色 role Qt::CheckStateRole角色

model中的每一个数据元素都有一个modelIndex和一套角色role。

model中的角色,role有多个,但是常用的就几个。 这些角色可以保存任意值,角色中可用保持QVariant类型的值。


最常用的是Qt::DisplayRole和Qt::EditRole角色。

这两个角色是用于显示和编辑的角色。


还有几个常用的角色是用来控制 基本显示属性的。

比如:

Qt:: FontRole,控制显示的字体。

Qt::TextAlignmentRole,控制元素 显示文字的对齐方式的

Qt::TextColorRole,控制显示文字颜色的。

Qt::BackgroundColorRole,控制背景颜色的。



Qt::CheckStateRole也是qt中的角色, 当flag()函数中,设置某一列具有Qt::CheckStateRole这种角色后,该列就会显示为一个CheckBox,


        //允许用户编辑item,必须重写setData()函数
        bool TradeTableModel::setData ( const QModelIndex & index, const QVariant & value, introle/* = Qt::EditRole */)
        {
            //允许用户编辑的只有3列 第一列CheckBox, 包裹数, 保价金额

            if(role == Qt::CheckStateRole && index.column() == ORDER_ID)
            {
                //用户勾选 每行第一列的CheckBox
                ORDER_LIST_STRUCT& orderData = m_OrderList[row];
                orderData.m_bChecked = !orderData.m_bChecked;

                //该行checkBox 勾选状态
                emit ModelCheckBoxStateChanged(orderData.m_bChecked ? Qt::Checked : Qt::Unchecked);
                
                emit layoutChanged();
            }

你可能感兴趣的:(模型视图)