chen12nan的个人主页

学习Qt的感想

http://www.qtcn.org/bbs/u/133503  [收藏] [复制]

chen12nan

  • 11

    关注

  • 11

    粉丝

  • 19

    访客

  • 等级:新手上路
  • 总积分:12
  • 男,1988-07-20

最后登录:2016-11-04

更多资料

日志

QTableWidget控件总结

2013-09-23 10:07

【1】QTableWidget简介
QTableWidget是QT对话框设计中常用的显示数据表格的控件。
学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。
两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。
QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。
这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。
使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
【2】QTableWidget控件属性
(1)禁止编辑表格
在默认情况下,表格里的字符是可以更改的。
比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:
  1. 1 ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
(2)设置表格为选择整行
  1. 1 /*设置表格为整行选中*/
    2 ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);

(3)设置单个选中和多个选中
单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。
1 /*设置允许多个选中*/2     ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
(4)表格表头的显示与隐藏
对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:
  1. 1 ui.qtablewidget->verticalHeader()->setVisible(true);  
    2 ui.qtablewidget->horizontalHeader()->setVisible(false);

(5)设置具体单元格中字体的对齐方式
  1. 1 ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);
(6)设置具体单元格中字体格式
  1. 1 ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10));  
    2 ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100));
    3 ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica"));
(7)设置具体单元格的值
  1. 1 ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));
(8)把QTableWidgetItem对象内容转换为QString
  1. 1 QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();
  1. 1 QComboBox *comBox = new QComboBox();
    2 comBox->addItem("F");
    3 comBox->addItem("M");
    4 ui.qtablewidget->setCellWidget(0,3,comBox);
(11)合并单元格
  1. 1 //合并单元格的效果
    2 ui.qtablewidget->setSpan(2, 2, 3, 2);
    3 //第一个参数:要改变的单元格行数
    4 //第二个参数:要改变的单元格列数
    5 //第三个参数:需要合并的行数
    6 //第四个参数:需要合并的列数
(12)具体单元格中插入图片
  1. ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));
(15)设置列标签
  1. 复制代码
    1     //初始化界面
    2     QStringList  HStrList;
    3     HStrList.push_back(QString("name"));
    4     HStrList.push_back(QString("id"));
    5     HStrList.push_back(QString("age"));
    6     HStrList.push_back(QString("sex"));
    7     HStrList.push_back(QString("department"));
    8    
    9
    10     //设置行列数(只有列存在的前提下,才可以设置列标签)
    11     int HlableCnt = HStrList.count();
    12     ui.qtablewidget->setRowCount(10);
    13     ui.qtablewidget->setColumnCount(HlableCnt);
    14
    15     //设置列标签
    16     ui.qtablewidget->setHorizontalHeaderLabels(HStrList);
(16)设置行和列的大小设为与内容相匹配

  1. 1 ui.qtablewidget->resizeColumnsToContents();  
    2 ui.qtablewidget->resizeRowsToContents();
(17)设置字体
  1. ui.qtablewidget->setFont(font);   //设置字体
(18)获取某一单元格的内容
  1. 1 QString strText = ui.qtablewidget->item(0, 0)->text();


来自http://www.cnblogs.com/Braveliu/archive/2013/01/07/2849744.html









分类:QT转载|回复:0|浏览:791|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-18 15:57
©2005-2016 QTCN开发网 版权所有 Gzip disabled