Qt的QTableView自定义委托详解

suoniao 2021-04-02
需要:0索币

-视图负责确定数据项的组织显示方式(列表,树形,表格)

-委托负责具体数据项的显示和编辑(数据值,编辑器)

-视图和委托共同完成数据显示功能和数据编辑功能

自定义委托的默认数据显示方式

-重写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

回帖
  • 消灭零回复
相关主题
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
Qt操作windows注册表的方法 bat从注册表中将键值删除 0
重写QSqlQueryModel实现QTableView显示图片 0
QLocalServer基于本地套接字socket的服务端server 0
Qt使用动态库的方法 QLibrary库的典型用法 0
QT实现视频播放器界面开发 0
QTableview实现鼠标放上面显示不同颜色 0
Qt的QTableView自定义委托详解 0
QTableView利用自定义委托实现日期显示下拉菜单文字颜色等 0
Qt利用QApplication::sendEvent和QMouseEvent模拟鼠标点击事件 0
Qt获取父进程路径和父进程ID代码 0
QStyledItemDelegate和QItemDelegate区别在于绘制和向视图提供编辑器的方式 0
Qt实现全局快捷键功能利用QxtGlobalShortcut库 0
利用QSS去掉QListWidget选中时的虚线框 0
如何自己使用 QEventLoop解决窗口一闪而过的问题 0
Qt 为什么没有提供跨平台的 sleep 函数? 0
相关主题
打印机USB驱动开发之实现打印服务器 0
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
海康相机SDK的C++对应的接口 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
CHKDSK解决 移动硬盘只能看见盘符其它信息都看不见另外双击也打不开 0
gogs一直报errror:dial tcp xxx.xxx.xxx.xxx 宿主机的ip 0
索鸟快传2.1.2发布 0
索鸟快传2.1.1发布 0
Qt操作windows注册表的方法 bat从注册表中将键值删除 0
重写QSqlQueryModel实现QTableView显示图片 0
QLocalServer基于本地套接字socket的服务端server 0
Qt使用动态库的方法 QLibrary库的典型用法 0
QT实现视频播放器界面开发 0
QTableview实现鼠标放上面显示不同颜色 0
Qt的QTableView自定义委托详解 0
QTableView利用自定义委托实现日期显示下拉菜单文字颜色等 0
Qt利用QApplication::sendEvent和QMouseEvent模拟鼠标点击事件 0