zoukankan      html  css  js  c++  java
  • Qt的QTabelWidget

    QTableWidget的用法总结  http://blog.csdn.net/zb872676223/article/details/39959061

    【Qt】在QTableWidget中添加QCheckBox并使其居中显示  http://www.cnblogs.com/it_mac/archive/2012/11/21/2780972.html 

     

    -------------------------------------------------

    QTableWidget控件总结

     

    【1】QTableWidget简介

    QTableWidget是QT对话框设计中常用的显示数据表格的控件。

    学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。

    两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。

    QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。

    这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。

    使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。

    【2】QTableWidget控件属性

    (1)禁止编辑表格

    在默认情况下,表格里的字符是可以更改的。

    比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

    1 ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

    (2)设置表格为选择整行

    1 /*设置表格为整行选中*/
    2 ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows); 

    (3)设置单个选中和多个选中

    单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。

    1 /*设置允许多个选中*/ 
    2     ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  

    (4)表格表头的显示与隐藏

    对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:

    1 ui.qtablewidget->verticalHeader()->setVisible(true);  
    2 ui.qtablewidget->horizontalHeader()->setVisible(false);

    (5)设置具体单元格中字体的对齐方式

    1 ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);

    (6)设置具体单元格中字体格式

    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 ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));

    (8)把QTableWidgetItem对象内容转换为QString

    1 QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();

    (9)具体单元格中添加控件

    1 QComboBox *comBox = new QComboBox(); 
    2 comBox->addItem("F"); 
    3 comBox->addItem("M"); 
    4 ui.qtablewidget->setCellWidget(0,3,comBox);

    (11)合并单元格

    1 //合并单元格的效果
    2 ui.qtablewidget->setSpan(2, 2, 3, 2);
    3 //第一个参数:要改变的单元格行数
    4 //第二个参数:要改变的单元格列数
    5 //第三个参数:需要合并的行数
    6 //第四个参数:需要合并的列数

    (12)具体单元格中插入图片

    ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));

    (13)设置显示网格

    ui.qtablewidget->setShowGrid(true);//显示表格线

    (14)设置滚动条

    ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条

    (15)设置列标签

    复制代码
     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 ui.qtablewidget->resizeColumnsToContents();  
    2 ui.qtablewidget->resizeRowsToContents();  

    (17)设置字体

    ui.qtablewidget->setFont(font);   //设置字体

    (18)获取某一单元格的内容

    1 QString strText = ui.qtablewidget->item(0, 0)->text();

    (19) 批量处理表格中的元件

     1 #include "subdialog.h"
     2 
     3 SubDialog::SubDialog(QWidget *parent)
     4 : QDialog(parent)
     5 {
     6 _pUi = new Ui::SubDialogClass;
     7 _pUi->setupUi(this);
     8 connect(_pUi->nameButton,SIGNAL(clicked()),this,SLOT(on_clicjName()));
     9 }
    10 
    11 void SubDialog::on_clickName()
    12 {
    13 _pUi->nameLabel->setText(QStringLiteral("马超"));
    14 _pUi->nameEdit->setText(QString("ChaoMa"));
    15 }
    16 #include "maindialog.h"
    17 #include "subdialog.h"
    18 
    19 MainDialog::MainDialog(QWidget *parent)
    20 : QWidget(parent)
    21 {
    22 _pUi = new Ui::MainDialogClass;
    23 _pUi->setupUi(this);
    24 connect(_pUi->showButton,SIGNAL(clicked()),this,SLOT(on_clickShow()));
    25 //connect(_pUi->nameButton,SIGNAL(clicked()),this,SLOT(on_clickName()));
    26 }
    27 
    28 void MainDialog::on_clickShow()
    29 {
    30 SubDialog dialog;
    31 if(dialog.exec() != QDialog::Accepted)//如果是取消就返回
    32 {
    33 return;
    34 }
    35 }
  • 相关阅读:
    51Nod 1239 欧拉函数之和
    51Nod 1244 莫比乌斯函数之和
    BZOJ 4805: 欧拉函数求和
    BZOJ 3944: Sum
    3.25阅读摘抄
    生活整洁之道
    1064. 朋友数(20)
    1063. 计算谱半径(20)
    1061. 判断题(15)
    1062. 最简分数(20)
  • 原文地址:https://www.cnblogs.com/584709796-qq-com/p/4979402.html
Copyright © 2011-2022 走看看