- 浏览: 3449646 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
sonichy:
Qt5改动很多,要改改了。
基于QItemDelegate的例子1 SpinBoxDelegate -
我的主页6:
楼主,2.2子查询的分页方式:SELECT * FROM ar ...
Mysql 分页语句Limit用法 -
liguoqi:
非常感谢楼主的用心指导,工具以及图片例子都提供了 赞!
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
问下这个图片怎么解压损坏呀
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
楼主讲解的非常详细,还附带工具和图片例子,非常感谢
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载
QTableView中嵌入复选框CheckBox
第二种方法:设置QAbstractTableModel的flags()函数法
通过Delegate创建QCheckBox来实现的Check列,只有在该列进入编辑模式时才能够Check/Uncheck。这显然不是我们想要的,网上翻来翻去,在一个国外论坛中看到了无需Delegate的实现方法,只需重写Model即可:
主要是修改两个函数:
//设置某一列为可选角色,绘画出QCheckBox
Qt::ItemFlags flags(const QModelIndex &index) const;
//根据界面选择QCheckbox,修改Model中的数据
bool setData(const QModelIndex &index, const QVariant &value, int role);
2.在StudentInfoModel .h头文件中的主要代码: class StudentInfoModel : public QAbstractTableModel { Q_OBJECT public: StudentInfoModel(const int totalColumn, const int aColumnNumWithChechBox = 0, QObject *parent = 0) :totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox), QAbstractTableModel(parent) {rowCheckStateMap.clear();}; public: int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role); public: void AddStudentInfo(const StudentInfo &studentInfo); signals: void StudentInfoIsChecked(const StudentInfo &studentInfo); private: typedef QVector<StudentInfo> StudentInfos; StudentInfos studentInfos; int totalColumn; int colNumberWithCheckBox; QMap<int, Qt::CheckState> rowCheckStateMap; }; 3.在StudentInfoModel.cpp文件中的主要代码如下: QVariant StudentInfoModel::data( const QModelIndex &index, int role ) const { if (role == Qt::DisplayRole) { if (index.column() == 0) return QString::number(index.row()+1); if (index.column() == 1) return studentInfos[index.row()].stuNumber; if (index.column() == 2) return studentInfos[index.row()].stuName; if (index.column() == 3) return studentInfos[index.row()].stuID; if (index.column() == 4) return studentInfos[index.row()].stuPhoneNumber; if (index.column() == 5) return studentInfos[index.row()].department; if (index.column() == 6) return studentInfos[index.row()].stuDescription; } if (role == Qt::CheckStateRole) { if (index.column() == colNumberWithCheckBox) { if (rowCheckStateMap.contains(index.row())) return rowCheckStateMap[index.row()] == Qt::Checked ? Qt::Checked : Qt::Unchecked; return Qt::Unchecked; } } return QVariant(); } Qt::ItemFlags StudentInfoModel::flags( const QModelIndex &index ) const { if (!index.isValid()) return 0; if (index.column() == colNumberWithCheckBox) return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } bool StudentInfoModel::setData( const QModelIndex &index, const QVariant &value, int role ) { if(!index.isValid()) return false; if (role == Qt::CheckStateRole && index.column() == colNumberWithCheckBox) { if (value == Qt::Checked) // { rowCheckStateMap[index.row()] = Qt::Checked; if(studentInfos.size() > index.row()) emit StudentInfoIsChecked(studentInfos[index.row()]); } else { rowCheckStateMap[index.row()] = Qt::Unchecked; } } return true; }
评论
2 楼
a2865285
2014-05-25
a2865285 写道
构造函数 StudentInfoModel 下面的是什么啊
:totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox),
QAbstractTableModel(parent) {rowCheckStateMap.clear();};
:totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox),
QAbstractTableModel(parent) {rowCheckStateMap.clear();};
哦 我去 看出来了 初始化参数列表....
1 楼
a2865285
2014-05-25
构造函数 StudentInfoModel 下面的是什么啊
:totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox),
QAbstractTableModel(parent) {rowCheckStateMap.clear();};
:totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox),
QAbstractTableModel(parent) {rowCheckStateMap.clear();};
发表评论
-
Qt官网变更【2012】
2012-09-21 19:30 4221Qt最近被Digia完全收购,诺基亚这两年的不理不睬,没有魄力 ... -
【转】QT实现不规则窗体
2012-09-21 18:50 5011看到好文章,收藏一下: 看到网上有很多不规则窗体的实现 ... -
Qt应用程序如何使用DCMTK类库进行二次开发DICOM数据传输
2012-09-13 09:35 0参考文章: 1、Using DCMTK with ... -
【转】将QT开发的界面程序封装成DLL,在VC中成功调用
2012-09-11 10:33 21136最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后 ... -
诺基亚挥别Qt,转手给Digia
2012-09-11 09:37 2868一家总部位于芬兰的IT业务供应商Digia今天宣布,已经签署了 ... -
Qt多线程间信号槽传递非QObject类型对象的参数
2012-09-07 15:29 21405一、以前就发现过这个问题: 在Qt项目中,有时候为了 ... -
QT样式表(QStyleSheet)
2012-08-17 10:37 17910QT样式表 (QStyleSheet) 作者:刘旭晖 ... -
FinalData磁盘文件恢复工具(绿色破解版)
2012-08-02 13:28 8616FinalData磁盘文件恢复工具(绿色破解版),使用起来很方 ... -
Eclipse Qt开发环境的建立【转】
2012-08-01 11:15 44001.下载Eclipse目前Eclipse+CDT已经可以 ... -
汽车辐射监测系统-Qt开发
2012-07-25 16:18 4703最近晚上抽空忙了两个月,才把一个小系统做完。虽然做的不是太完 ... -
Qt做发布版,解决声音和图片、中文字体乱码问题
2012-07-14 16:02 4877Qt做发布版,解决声音和图片、中文字体乱码问题 ... -
QTableView使用中的疑问,如何及时显示操作Model后的结果?
2012-06-01 14:52 0最终的解决方法:我正 ... -
【转】Qt QTableview使用
2012-06-01 09:49 9683QTableWidget是QT程序中常用的显示数 ... -
QTableView双击 单机事件信号
2012-06-01 09:47 23142双击QTableView的行,获取该行数据 代码 ... -
QMessageBox改变大小
2012-05-31 15:33 8467创建一个QMessageBox: QMessageBo ... -
更新QTableView中的进度条状态
2012-05-30 14:37 14887前段时间,我接触了,如何在一个QTableView中加入一个控 ... -
QThread 线程暂停 停止功能的实现
2012-05-29 11:56 12223为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设 ... -
QT环境变量
2012-05-28 18:53 5599不知道为啥同事有台电脑,装完Qt-VS2008库,和VS Ad ... -
广告光
2012-05-24 18:33 0盈创广告联盟 http://www.yo114.cn/ ... -
Test
2012-05-24 18:22 2195Test<IMG SRC="cf08e32c2 ...
相关推荐
以下我们将详细探讨如何在Qt中实现QTableView同时冻结行和列的功能。 首先,我们需要理解QTableView的工作原理。QTableView是基于QAbstractItemView构建的,它通过模型-视图-代理(Model-View-Proxy)架构来显示...
总结来说,实现Qt中的QTableView冻结行、列或局部单元格主要涉及自定义视图类,重写滚动事件,以及可能的多视口管理。通过这样的方式,你可以为用户提供一个更加直观和高效的表格浏览体验。在开发过程中,记得持续...
在QT中,要在QTableView的一列中添加两个按钮,我们需要了解以下几个关键知识点: 1. **QTableView**:QTableView是QTableView类的实例,它提供了一个二维表格视图,可以用来显示和编辑模型数据。QTableView可以...
总结一下,要在QT中基于QTableView实现表格翻页标签,你需要: 1. 理解QTableView和数据模型的关系。 2. 连接滚动条的信号槽,实现翻页功能。 3. 实现精准定位,正确处理滚动条变化时的索引更新。 4. 启用并调整表格...
本教程将深入探讨如何在QTableView中添加复选框,特别是在表头和第一列中实现这一功能,以增强用户界面的交互性。 首先,我们要明白QTableView的工作原理。它是基于QAbstractItemView类的,通过QStandardItemModel...
在Qt框架中,QTableView是用于显示表格数据的控件,它可以很好地与各种模型(如QStandardItemModel或QSqlTableModel)结合使用。本教程将详细讲解如何在QTableView中实现复选框、分页和查询功能,并涉及与MySQL...
1. **拖拽列**:在QTableView中实现拖拽列功能,主要是通过重载默认的行为并处理`dragMoveEvent`和`dropEvent`等事件来实现的。开发者通常会创建一个QTableView的子类,并通过`setDragDropOverwriteMode`、`...
原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404。代码为QT4,QT5有些问题,因为只是参考里面的代码,就不是很在意。
使用QPainter和QPrinter;思路是设置首先规定纸张大小为1024*724,然后遍历行列,将表格分割若干小块,然后调用TableView->...借鉴了https://blog.csdn.net/superjoel/article/details/5177199思路,实现代码
QT QTableView是QT框架中的一种视图控件,用于显示表格数据。下面我们将详细介绍QT QTableView的用法,包括设置表头、设置表格属性、动态添加行等。 一、设置表头 在使用QT QTableView之前,我们需要首先设置表头...
在Qt框架中,QTableView是一种常用的控件,用于显示二维数据模型,如QStandardItemModel或自定义的数据模型。本文将详细讲解如何设置QTableView的列宽,以优化表格的显示效果。 方法一:使用`setSectionResizeMode...
原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404,资源比较难下载,我下载好帮作者上传下。实例可用,简单易懂,对于QTableView导出为excel...
原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404。经过修改,支持QT的编译和运行。
在Qt编程中,QTableView是用于显示表格数据的控件,而QHeaderView则是QTableView的一部分,用于展示列头或行头。本主题聚焦于如何在QTableView的表头(QHeaderView)中添加更丰富的交互元素,如Combobox(下拉框)、...
在Qt中,我们可以重写`dragMoveEvent`和`dropEvent`这两个信号来处理拖放操作。`dragMoveEvent`是在拖动过程中触发的事件,而`dropEvent`则在释放鼠标时,确定目标位置时触发。 以下是一些关键步骤: 1. **启用...
在Qt框架中,QTableView是用于显示表格数据的控件,它是Qt Widgets模块的一部分,广泛应用于桌面应用开发中。QTableView允许用户以表格形式展示结构化的数据,支持数据的编辑、排序和筛选功能。本教程将深入探讨如何...
QTableView是QT库中的一个关键部件,它允许开发者创建表格视图,用于显示和编辑二维数据。 首先,QTableView是Qt Widgets模块的一部分,它可以和QAbstractItemModel一起使用,为用户提供灵活的数据展示。...
在Qt框架中,QTableView是用于显示表格数据的控件,通常与QAbstractItemModel或QStandardItemModel一起使用。然而,QTableView的功能可以进一步增强,通过实现动态代理(Dynamic Proxy)来扩展其交互性。动态代理...