model中 setData()函数 flag()函数作用

    如果允许用户编辑view中的item,那么必须重写model中的setData()函数和flag()函数,


    //允许用户编辑item,必须重写setData()函数

        bool TradeTableModel::setData ( const QModelIndex & index, const QVariant & value, int role/* = 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();

            }




        Qt::ItemFlags  TradeTableModel::flags ( const QModelIndex & index ) const
        {
            Qt::ItemFlags flags = QAbstractItemModel::flags(index);
            switch(index.column())
            {
            case ORDER_ID:
                flags |= Qt::ItemIsUserCheckable; ///该角色,将第一列设置为CheckBox控件

                break;
            case PACKAGE_NUM:
                {
                    if (index.row() < m_OrderList.size())
                    {
                        const ORDER_LIST_STRUCT& orderData = m_OrderList[index.row()];
                        if ((m_UserType == CurrentUser::UT_SOP) && !orderData.m_cky2Name.isEmpty())//该订单是SOPL订单,则禁用
                        {
                        }
                        else if(m_bEditPackageNum )
                        {
                            flags |= Qt::ItemIsEditable;
                        }
                    }
                }
                break;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值