QTableView基本用法讲解,Qt表格控件的使用方法
2013-10-12 09:40
831 查看
QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件,它与C++Builder中的DBGrid作用类似。坦白的说,DBGrid的使用要比QTableView更容易一些。但QTableView在使用麻烦的同时,也提供了更多的灵活性。
软件环境: ubuntu
最终效果图:
![](http://www.qtbcw.com/data/attachment/forum/201210/26/093501bt33b5b7t8y0jtbd.jpg)
一、添加表头:
QStandardItemModel *model = new QStandardItemModel();
model->setColumnCount(2);
model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("卡号"));
model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("姓名"));
复制代码
二、设置表格属性:
ui->tableView->setModel(model);
//表头信息显示居左
ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
//设置列宽不可变
ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed);
ui->tableView->setColumnWidth(0,101);
ui->tableView->setColumnWidth(1,102);
复制代码
注:在进行表格设置时必须是“ui->tableView->setModel(model);”在前,属性具体设置在后,
反之则设置不会生效。如上述代码所示。
三、添加行(添加三行一样的信息):
for(int i = 0; i < 3; i++)
{
model->setItem(i,0,new QStandardItem("2009441676"));
//设置字符颜色
model->item(i,0)->setForeground(QBrush(QColor(255, 0, 0)));
//设置字符位置
model->item(i,0)->setTextAlignment(Qt::AlignCenter);
model->setItem(i,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
}
复制代码
四、删除行:
//x是指定删除哪一行
model->removeRow(x);
//删除所有行
model->removeRows(0,model->rowCount());
复制代码
再举一个例子:
在一个药品划价模块中有这样的操作流程:
检索处方项目成功后,把该项目显示到QTableView里,把需要编辑的数量字段提供给用户输入,用户输入确认后,该项目留在列表中,然后开始下一项目检索录入。
实现过程如下:
录入的项目保留在临时表tmp中,界面上的QTableView取名为tbList,与tbList关联的Model取名为tb1。检索成功后,把检索结果插入到临时表中,把需要编辑的字段提供给用户。
tb1=newQSqlTableModel(this,*dbR); //dbR是本应用中的数据源
tb1->setTable("tmp"); //处方临时表
复制代码
程序中需要显示的时候,
tbList->setModel(NULL); //清除原先数据集
tbList->setModel(tb1); //刷新显示
复制代码
程序中需要提供编辑输入的时候
QModelIndexmdidx=m_ui->tbList->model()->index(row,column); //获得需要编辑的单元格的位置
m_ui->tbList->setFocus(); //把输入焦点交给tbList
m_ui->tbList->setCurrentIndex(mdidx); //设定需要编辑的单元格
m_ui->tbList->edit(mdidx); //开始编辑
复制代码
有一个问题需要注意。向QTableView中添加记录时,字段一定要完整,不能有空白字段,否则结果无法保存。切记。
如果需要对用户输入做限制,比如只能在指定的字段输入指定的数据类型,可以通过QItemDelegate来实现。
贴一段代码,说明QTableView基本用法
QStandardItemModel model;
//设置大小
model.setColumnCount(3); //列
model.setRowCount(musicFound); //行
//设置标题
model.setHeaderData(0,Qt::Horizontal,"ID");
//添加数据
for(int j=0;j<row;j++)
{
//写id
QStandardItem *itemID = new QStandardItem("hello");//QString::number(j)));
model.setItem(j,0,itemID);
}
//选择这个model
m_ui->tableView->setModel(&model);
//隐藏左边那列
m_ui->tableView->verticalHeader()->hide();
//列宽
m_ui->tableView->setColumnWidth(0,30);
//整行选择
m_ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
复制代码
软件环境: ubuntu
最终效果图:
![](http://www.qtbcw.com/data/attachment/forum/201210/26/093501bt33b5b7t8y0jtbd.jpg)
一、添加表头:
QStandardItemModel *model = new QStandardItemModel();
model->setColumnCount(2);
model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("卡号"));
model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("姓名"));
复制代码
二、设置表格属性:
ui->tableView->setModel(model);
//表头信息显示居左
ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
//设置列宽不可变
ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed);
ui->tableView->setColumnWidth(0,101);
ui->tableView->setColumnWidth(1,102);
复制代码
注:在进行表格设置时必须是“ui->tableView->setModel(model);”在前,属性具体设置在后,
反之则设置不会生效。如上述代码所示。
三、添加行(添加三行一样的信息):
for(int i = 0; i < 3; i++)
{
model->setItem(i,0,new QStandardItem("2009441676"));
//设置字符颜色
model->item(i,0)->setForeground(QBrush(QColor(255, 0, 0)));
//设置字符位置
model->item(i,0)->setTextAlignment(Qt::AlignCenter);
model->setItem(i,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
}
复制代码
四、删除行:
//x是指定删除哪一行
model->removeRow(x);
//删除所有行
model->removeRows(0,model->rowCount());
复制代码
再举一个例子:
在一个药品划价模块中有这样的操作流程:
检索处方项目成功后,把该项目显示到QTableView里,把需要编辑的数量字段提供给用户输入,用户输入确认后,该项目留在列表中,然后开始下一项目检索录入。
实现过程如下:
录入的项目保留在临时表tmp中,界面上的QTableView取名为tbList,与tbList关联的Model取名为tb1。检索成功后,把检索结果插入到临时表中,把需要编辑的字段提供给用户。
tb1=newQSqlTableModel(this,*dbR); //dbR是本应用中的数据源
tb1->setTable("tmp"); //处方临时表
复制代码
程序中需要显示的时候,
tbList->setModel(NULL); //清除原先数据集
tbList->setModel(tb1); //刷新显示
复制代码
程序中需要提供编辑输入的时候
QModelIndexmdidx=m_ui->tbList->model()->index(row,column); //获得需要编辑的单元格的位置
m_ui->tbList->setFocus(); //把输入焦点交给tbList
m_ui->tbList->setCurrentIndex(mdidx); //设定需要编辑的单元格
m_ui->tbList->edit(mdidx); //开始编辑
复制代码
有一个问题需要注意。向QTableView中添加记录时,字段一定要完整,不能有空白字段,否则结果无法保存。切记。
如果需要对用户输入做限制,比如只能在指定的字段输入指定的数据类型,可以通过QItemDelegate来实现。
贴一段代码,说明QTableView基本用法
QStandardItemModel model;
//设置大小
model.setColumnCount(3); //列
model.setRowCount(musicFound); //行
//设置标题
model.setHeaderData(0,Qt::Horizontal,"ID");
//添加数据
for(int j=0;j<row;j++)
{
//写id
QStandardItem *itemID = new QStandardItem("hello");//QString::number(j)));
model.setItem(j,0,itemID);
}
//选择这个model
m_ui->tableView->setModel(&model);
//隐藏左边那列
m_ui->tableView->verticalHeader()->hide();
//列宽
m_ui->tableView->setColumnWidth(0,30);
//整行选择
m_ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
复制代码
相关文章推荐
- QTableView基本用法讲解,Qt表格控件的使用方法
- DevExpress MVC 控件使用 01 --- 基本使用方法
- Android编程 - WebView控件基本使用方法
- WdatePicker 日历控件使用方法+基本常用方法
- QT,QVector 基本用法,遍历[实例讲解]
- WdatePicker 日历控件使用方法+基本常用方法
- Android学习笔记:滚动控件ListView的基本使用方法
- UISegmentedControl分段控件的基本概念和使用方法
- qt中tinyxml2的基本使用方法
- Qt第三方图形控件qwt的编译安装与使用的简单方法(Win7+Qt4.8.6+MinGW4.8.2)
- ExtJS的使用方法汇总(1)——配置和表格控件使用
- Qt5.9中控件listWidget用法(基本用法)
- Objective-C之foundation框架中的NSString的使用方法、指针基本用法、读取本地和远程文件
- ExtJS的使用方法汇总(1)——配置和表格控件使用
- Ajax 1.0 中使用web控件调用后台方法的用法.
- IOS学习笔记(七)之UISegmentedControl分段控件的基本概念和使用方法
- QT自定义函数使用UI控件的简单方法
- IOS学习笔记(七)之UISegmentedControl分段控件的基本概念和使用方法
- Android常规控件的基本使用方法
- ExtJS的使用方法汇总—配置和表格控件使用