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