-视图负责确定数据项的组织显示方式(列表,树形,表格)
-委托负责具体数据项的显示和编辑(数据值,编辑器)
-视图和委托共同完成数据显示功能和数据编辑功能
自定义委托的默认数据显示方式
-重写paint成员函数
-在paint中自定义数据显示方式
-重写editorEvent成员函数
-在editorEvent中处理交互事件
在paint中自定义数据显示方式
if(index.data().type() == QVariant::Bool)
{
bool data = index.model()->data(index,Qt::DispalyRole).toBool();
QStyleOptionButton checkBoxStyle; //组件绘制参数
/* 设置具体的绘制参数 */
checkBoxStyle.state = data? QStyle::State_On : QStyle::State_Off;
checkBoxStyle.state |= QStyle::State_Enabled;
checkBoxStyle.rect = option.rect;
checkBoxStyle.rect.setX(option.rect.x() + option.rect.width() / 2 -6);
/* 根据参数绘制组件(数据项自定义显示方式)*/
QApplication::style()->drawControl(QStyle::CE_CheckBox,&checkBoxStyle,painter);
}
在editorEvent中处理交互事件
if(index.data().type() == QVariant::Bool)
{
QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(event);
if(event->type() == QEvent::MouseButtonPress &&
option.rect.contains(mouseEvent->pos()))
{
bool data = model->data(index,Qt::DisplayRole).toBool();
model->setData(index, !data,Qt::DisplayRole);
}
}
委托是视图的重要构成部分
-视图负责数据项的组织显示方式
-委托负责具体数据项中的数值的显示方式
-重写委托的paint函数自定义数据项显示方式
-重写委托的editorEvent函数处理交互事件
————————————————
原文链接:https://blog.csdn.net/qq_29962483/article/details/82841836