推广 热搜:

QT控件之Qtable Widget

   2021-02-14 57
核心提示:QT控件之Qtable Widget目录QT控件之Qtable Widget1、表格基础属性2、表格编辑属性3、单元格选中属性3、表头的显示与隐藏4、单元格字体设置5、设置单元格内文字的对齐方式6
 

QT控件之Qtable Widget

 

目录
  • QT控件之Qtable Widget
    • 1、表格基础属性
    • 2、表格编辑属性
    • 3、单元格选中属性
    • 3、表头的显示与隐藏
    • 4、单元格字体设置
    • 5、设置单元格内文字的对齐方式
    • 6、合并单元格
    • 7、设置行列宽
    • 8、其它示例设置

 

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); 

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 = new QTableWidgetItem (content);        table->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);(注意此处的列没有值)
 
举报 收藏 打赏
 
更多>同类QT
推荐图文
推荐QT
推荐QT
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报