コード例 #1
0
bool UpdateDevModel::pushItem(DeviceItem *item)
{

    int pos = items.size();
    if (!this->insertRow(pos, QModelIndex()))
        return false;

    DeviceItem * newItem = items.value(pos);
    bool result = newItem->setData(item);
    if (result){
        QModelIndex left = this->createIndex(pos,0);
        QModelIndex right = this->createIndex(pos,headerTexts.size()-1);
        topLeftList.append(left);
        bottomRightList.append(right);
        //emit dataChanged(left, right);
    }
    return result;
}
コード例 #2
0
bool UpdateDevModel::setData(const QModelIndex &index, const QVariant &value, int role)
{

//    if(role == Qt::CheckStateRole && index.column() == 0){
//        DeviceItem *item = static_cast<DeviceItem*>(index.internalPointer());
//        if (value==Qt::Unchecked)
//        {
//            item->setCheckState(false);
//            emit dataChanged(index, index);
//            //m_checkedList.removeOne(item);
//            //emit selectedRows(m_checkedList.size());
//        }
//        else if(value==Qt::Checked)
//        {
//            item->setCheckState(true);
//            emit dataChanged(index, index);
//            if(!m_checkedList.contains(item)){
//                m_checkedList.append(item);
//                emit selectedRows(m_checkedList.size());
//            }
//        }
//        return true;
//    }

    if(role == Qt::UserRole){
        return false;
    }
    if (role != Qt::EditRole)
        return false;

    DeviceItem *item = items.value(index.row());
    bool result = item->setData(index.column(), value);

    if (result){
        topLeftList.append(index);
        bottomRightList.append(index);
    //    emit dataChanged(index, index);
    }
    return result;
}