QT:我自己封装的一个简易的二维表类SimpleTable
来源:互联网 发布:申请域名需要多少钱 编辑:程序博客网 时间:2024/04/30 15:33
在QT中,QTableWidget处理二维表格的功能很强大(QTableView更强大),但有时我们只想让它显示少量数据(文字和图片),这时,使用QTableWidget就有点不方便了(个人感觉)。
所以我对QTableWidget再做了一次封装(SimpleTable类),让它在处理小型表格时更方便。
代码很简单,要解释的就写在注释里面了,欢迎大家使用。
所以我对QTableWidget再做了一次封装(SimpleTable类),让它在处理小型表格时更方便。
代码很简单,要解释的就写在注释里面了,欢迎大家使用。
如果大家发现这个类的BUG的话,欢迎提出,大家共同学习。
上代码:
//simpletable.h#ifndef SIMPLETABLE_H_#define SIMPLETABLE_H_#include <QtCore>#include <QtGui>class SimpleTable : public QTableWidget{Q_OBJECTprivate:public://构造函数,无实际内容,直接调用的构造函数SimpleTable(QWidget *parent = 0) : QTableWidget(parent) { }SimpleTable(int row, int column, QWidget *parent = 0): QTableWidget(row, column, parent) { }//设置某个单元格中的文字void SetCellText( int cx, int cy, const QString &text, int alignment = Qt::AlignLeft, const QIcon icon = QIcon() );//在某个单元格中放置一张小图片void SetCellPixmap(int cx, int cy, const QPixmap &pixmap,Qt::Alignment alignment = Qt::AlignCenter);//获取某个单元格中的字符串(如果没有,就返回一个空字符串)QString GetCellText(int cx, int cy);//获取某个单元格的图片(如果没有,就返回一张空图片)QPixmap GetCellPixmap(int cx, int cy);};#endif//simpletable.cpp#include "simpletable.h"void SimpleTable::SetCellText(int cx, int cy, const QString &text, int alignment, const QIcon icon){//检查是否越界if( cx>=rowCount() || cy>=columnCount() ){qDebug() << "Fail, Out of Range";return;}//如果此单元格中已经有item了,就直接更改item中的内容//否则,新建一个itemQTableWidgetItem *titem = item(cx, cy);if( NULL == titem )titem = new QTableWidgetItem;titem->setText(text);titem->setTextAlignment(alignment);//如果图标不为空,就为此item设置图标if( !icon.isNull() )titem->setIcon(icon);setItem(cx, cy, titem);}void SimpleTable::SetCellPixmap(int cx, int cy, const QPixmap &pixmap,Qt::Alignment alignment){if( cx>=rowCount() || cy>=columnCount() ){qDebug() << "Fail, Out of Range";return;}//在item中设置图片有很多方法,但我还是觉得在其中放置带图片一个Label最简单QLabel *label = new QLabel(this);label->setAlignment(alignment);label->setPixmap(pixmap);setCellWidget(cx, cy, label);}QString SimpleTable::GetCellText(int cx, int cy){QString result;if( cx>=rowCount() || cy>=columnCount() ){qDebug() << "Fail, Out of Range";return result;}QTableWidgetItem *titem = item(cx, cy);if( NULL != titem ){result = titem->text();}return result;}QPixmap SimpleTable::GetCellPixmap(int cx, int cy){QPixmap result;if( cx>=rowCount() || cy>=columnCount() ){qDebug() << "Fail, Out of Range";return result;}QTableWidgetItem *titem = item(cx, cy);if( NULL == titem )return result;QLabel *label = dynamic_cast<QLabel*>( cellWidget(cx, cy) );result = *label->pixmap();return result;}
以下是一个简单的测试例子:
//main.cpp//测试例子#include "simpletable.h"int main(int argc, char **argv){QApplication app(argc, argv);SimpleTable table(20, 10);for(int i=0; i<20; i++){for(int j=0; j<10; j++){table.SetCellText(i, j, QString::number(i*10+j));}}table.show();return app.exec();}
- QT:我自己封装的一个简易的二维表类SimpleTable
- 一个简易的Toast封装
- QT我的简易记事本
- 封装一个自己的php操作类
- 自己简单封装的一个CDialog类
- 自己封装的一个工具类
- 自己封装的一个工具类
- 一个简单封装存储二维数据表的类
- 我写的一个锁封装类
- 我封装的一个XSLT类。
- 自己写的一个简易单文件上传类
- 自己写的一个简易播放器
- 自己写一个简易的string类型
- 自己实现一个简易的SpringMVC
- 自己模拟一个简易的spring框架
- 基于Volley封装自己的简易网络框架
- Qt类的封装
- 简易轮播图的封装
- MongoDB管理与开发精要《红丸出品》4.10 客户端GUI工具
- C语言为什么必须有main函数
- 正确时间使用正确工具找到正确答案
- 关于复制文件或文件夹时提示没有足够的可用磁盘空间的解决办法-释放磁盘空间,磁盘整理
- IOCP应用
- QT:我自己封装的一个简易的二维表类SimpleTable
- PostgreSQL启动过程中的那些事十六:启动进程一
- 2.CSS文字颜色定义,背景色定义
- 深度剖析C++模型对象
- 黑马程序员--线程及共享变量
- ALSA音频驱动研究(一)
- 24、25岁的年龄,是时候成熟些,做些该该做的事,想些着边际的事了。
- 基数排序
- SqlDataReader的Read方法