QT控件之Qtable Widget

https://www.cnblogs.com/retry/p/9329397.html

目录

QT控件之Qtable Widget

1、表格基础属性

  • 表格的定义
//方法1:
QTableWidget *tableWidget = new QTableWidget(10,5); // 构造了一个QTableWidget的对象,并且设置为10行,5列 
//方法2:

QTableWidget *tableWidget = new QTableWidget;

tableWidget->setRowCount(10); //设置行数为10

tableWidget->setColumnCount(5); //设置列数为5

  • 表头的设置
QStringList header; 

header<<“Month”<<“Description”;

tableWidget->setHorizontalHeaderLabels(header);

  • 表格内容设置
tableWidget->setItem(0,0,new QTableWidgetItem("Jan")); 
tableWidget->show(); 

2、表格编辑属性

  • 在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,也是可以进行设置的。
 原型:tableWidget->setEditTriggers(QAbstractItemView::EditTrigger);

QAbstractItemView.EditTrigger参数有多个,QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个。

参数 XX XX
QAbstractItemView.NoEditTriggers 0 不能对表格内容进行修改
QAbstractItemView.CurrentChanged 1 任何时候都能对单元格修改
QAbstractItemView.DoubleClicked 2 双击单元格
QAbstractItemView.SelectedClicked 4 单击已选中的内容
QAbstractItemView.CurrentChanged 8 任何时候都能对单元格修改
QAbstractItemView.AnyKeyPressed 16 双击单元格
QAbstractItemView.AllEditTriggers 31 双击单元格

3、单元格选中属性

  • 整行选中
原型: tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  //整行选中的方式
参数 含义
QAbstractItemView.SelectItems 选中单个单元格
QAbstractItemView.SelectRows 选中一行
QAbstractItemView.SelectColumns 选中一列
  • 单个选中和多个选中的设置
 原型:tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
参数 含义
QAbstractItemView.NoSelection 不能选择
QAbstractItemView.SingleSelection 选中单个目标
QAbstractItemView.MultiSelection 选中多个目标

3、表头的显示与隐藏

  • 对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置。
 //注意:需要 #include <QHeaderView>
 tableWidget->verticalHeader()->setVisible(false);   //隐藏列表头
 tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头

4、单元格字体设置

QTableWidgetItem *item = new QTableWidgetItem("Apple");

item->setBackgroundColor(QColor(0,60,10));

item->setTextColor(QColor(200,111,100));

item->setFont(QFont("Helvetica"));

tableWidget->setItem(0,3,item);

//另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont(“Helvetica”));

5、设置单元格内文字的对齐方式

使用newItem.setTextAlignment()函数进行设置,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左,如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可 。

//方法
ui->tableWidget->item(i, 2)->setTextAlignment(Qt::AlignCenter);

//方法
QTableWidgetItem *t_test = new QTableWidgetItem(xList);
t_test->setTextAlignment(Qt::AlignCenter);

扫描二维码关注公众号,回复: 10004550 查看本文章

6、合并单元格

tableWidget->setSpan(0, 0, 3, 1)  //# 其参数为: 要改变单元格的  1行数  2列数  要合并的  3行数  4列数

7、设置行列宽

  • 指定行列宽
//方法一:
    tableWidget->setColumnWidth(3,200);
    tableWidget->setRowHeight(3,60);
//方法二:    
  ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::fix); //指定列宽
 ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::fix);  //制定行高
  • 自动调整行列宽
//根据内容自动调整所有行的行高

//方法一:
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();

//方法二:
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch); 自适应列宽
ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch); 自适应行高

//根据内容自动调整某一行的行高
tableWidget->resizeColumnsToContents(2);//2行
tableWidget->resizeRowsToContents(2);

//另类表格效果:
table->horizontalHeader()->setStretchLastSection(true); //其它列保持默认宽度,最后一列拉伸填满。

8、其它示例设置

int rowIndex = m_pAttrbuteList->rowCount();
 tableWidget->setRowCount(rowIndex + 1);//总行数增加1

tableWidget->setRowHeight(rowIndex, 24);//设置行的高度


QTableWidget *table = new QTableWIdget(this);

table->setColumnCount(5); //设置列数

table->setRowCount(3); //设置行数/

/设置列名/

QStringList headers;

headers<<“列名1”<<“列名2”<<“列名3”;

table->setHorizontalHeaderLabels(headers);

/给单元格添加内容/

void addItemContent(int row, int column, QString content)

{

  QTableWidgetItem *item = <span class="hljs-keyword">new</span> QTableWidgetItem (content);

  table-&gt;setItem(row, column, item);

}

/给单元格中增加图标/

QTableWidgetItem *item = new QTableWidgetItem(QIcon(“myImage.jpg”), NULL); //只加入图标,没有字符串

QTableWidgetItem *item = new QTableWidgetItem(QIcon(“myImage.jpg”), myString); //加入图标和字符串

table->setItem(row, column, item);

/插入一行/

int row = table->rowCount();

table->insertRow(row);

/插入一列/

int column = table->columnCount();

table->insertColumn(column);

//使行列头自适应宽度,最后一列将会填充空白部分

table->horizontalHeader()->setStretchLastSection(true);

//使行列头自适应宽度,所有列平均分来填充空白部分

table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);

//使行自适应高度,假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar

table->verticalHeader()->setResizeMode(QHeaderView::Strtch);

//设置单击选择一行

table->setSelectionBehuavior(QAbstractItemView::SelectRows);

//设置每行内容不可编辑

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

//设置只能选择一行,不能选择多行

table->setSelectionMode(QAbstractItemView::SingleSelection);

/去掉每行的行号/

QHeaderView *headerView = table->verticalHeader();

headerView->setHidden(true);

/设置让某个单元格或某行选中/

选中单元格:table->setCurrentCell(row, column, QItemSelectionModel::Select);

选中一行:table->setCurrentCell(row, QItemSelectionModel::Select);(注意此处的列没有值)

-------------------------------------- 适合自己的才是最好的!-----------------------------------------
发布了42 篇原创文章 · 获赞 148 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/baidu_37503452/article/details/104225655