PYQT5 QTableWidget詳細用法


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.運行結果


————————————————
版權聲明:本文為CSDN博主「mark-puls」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cwj066/java/article/details/83344705


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM