PYQT5 QTableWidget详细用法

追逐阳光的风 2020-07-04

1.设置列数  列宽

ui->tableWidget->setColumnCount(4); //设置列数
ui->tableWidget->setColumnWidth(0, 90);  //0 设置列宽
ui->tableWidget->setColumnWidth(1, 190); //1 设置列宽
ui->tableWidget->setColumnWidth(2, 95);  //2 设置列宽
ui->tableWidget->setColumnWidth(3, 95);  //3 设置列宽

2.设置每一列的表头

QStringList sListHeader;
sListHeader << "预处理类型" << "窗口大小" << "类型" << "阀值";
ui->tableWidget->setHorizontalHeaderLabels(sListHeader);

//设置列内容自适应宽度
#if defined(SS_UBUNTU) //UBUNTU
ui->twShowData->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->twShowData->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
#else //ARM
ui->twShowData->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
ui->twShowData->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
#endif

3.添加一行

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

4.设置表头字体类型

QFont font = ui->tableWidget->horizontalHeader()->font(); //先获取字体
font.setBold(true); //字体设置为粗体
ui->tableWidget->horizontalHeader()->setFont(font); //设置每一列的标题字体为粗体

5.设置行属性

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选择模式,选择单行
ui->tableWidget->verticalHeader()->setDefaultSectionSize(10); //设置行高
ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);//禁止鼠标拖动缩放行高度
ui->tableWidget->setRowHeight(1, 35);//设置第一行高度
ui->tableWidget->setRowHidden(1, true);//隐藏第一行

6.设置列属性

ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns); //设置选择模式,选择单列
ui->tableWidget->horizontalHeader()->setDefaultSectionSize(10); //设置列宽
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);//禁止鼠标拖动缩放行列宽
ui->tableWidget->setColumnWidth(1, 35);//设置第一列宽度
ui->tableWidget->setColumnHidden(1, true);//隐藏第一行

7. 设置综合属性

 ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //设置充满表宽度
 ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);//设置表格内容自动适应宽度
 ui->tableWidget->verticalHeader()->setDefaultSectionSize(10); //设置行高
 ui->tableWidget->setFrameShape(QFrame::NoFrame); //设置无边框
 ui->tableWidget->setShowGrid(false); //设置不显示格子线
 ui->tableWidget->verticalHeader()->setVisible(false); //设置垂直头不可见
 ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  //可多选(Ctrl、Shift、  Ctrl+A都可以)
 ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  //设置选择行为时每次选择一行
 ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑
 ui->tableWidget->horizontalHeader()->resizeSection(0,150); //设置表头第一列的宽度为150
 ui->tableWidget->horizontalHeader()->setFixedHeight(25); //设置表头的高度
 ui->tableWidget->setStyleSheet("selection-background-color:lightblue;"); //设置选中背景色
 ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}"); //设置表头背景色

8.动态添加控件

//第一列 动态添加QTableWidgetItem
int iRow = ui->tableWidget->rowCount();
QTableWidgetItem *item = new QTableWidgetItem("二值化");
ui->tableWidget->setItem(iRow, 0, item); //添加到界面

//第二列 动态添加QComboBox
QComboBox* comboBox1 = new QComboBox();
comboBox1->insertItem(0, "3x3");
comboBox1->insertItem(1, "5x5");
comboBox1->setCurrentIndex(data.iDlgSize);
comboBox1->setProperty("row", iRow);
comboBox1->setProperty("col", 1);
ui->tableWidget->setCellWidget(iRow, 1, comboBox1);
connect(comboBox1, SIGNAL(currentIndexChanged(int)), this, SLOT(onCobColumnChanged(int)));

//第三列 动态添加QComboBox
QComboBox* comboBox2 = new QComboBox();
comboBox2->insertItem(0, tr("绝对"));
comboBox2->insertItem(1, tr("相对"));
comboBox2->insertItem(2, tr("自适应"));
comboBox2->setCurrentIndex(data.iType);
comboBox2->setProperty("row", iRow);
comboBox2->setProperty("col", 2);
ui->tableWidget->setCellWidget(iRow, 2, comboBox2);
connect(comboBox2, SIGNAL(currentIndexChanged(int)), this, SLOT(onCobColumnChanged(int)));

//第四列 动态添加QSpinBox
QSpinBox* spinBox3 = new QSpinBox();
spinBox3->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
spinBox3->setMinimum(0);
spinBox3->setMaximum(100);
spinBox3->setSuffix(" %");
spinBox3->setFocusPolicy(Qt::ClickFocus);
spinBox3->setProperty("row", iRow);
spinBox3->setProperty("col", 3);
spinBox3->setValue(data.iThreshold);
ui->tableWidget->setCellWidget(iRow, 3, spinBox3);
connect(spinBox3, SIGNAL(valueChanged(int)), this, SLOT(onSpbColumnChanged(int)));

9.运行结果

PYQT5 QTableWidget详细用法
————————————————
版权声明:本文为CSDN博主「mark-puls」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cwj066/java/article/details/83344705

相关推荐