目錄
0.背景
1.詳細代碼
0.背景
項目需要,我有一個自定義的類Steer_Electrode_Table,是一個QTableView;
記錄一下QTableView修改前后的樣式,僅供參考
看一下我修改前后的樣式對比
1.詳細代碼
void Steer_Electrode_Table::initTable() {// 設置模型setModel(m_model);//.h定義:QStandardItemModel* m_model;// 設置表頭QStringList headers;headers << "序號" << "電極名稱" << "電極型號" << "宏觸點數量" << "微觸點數量" << "植入區域" << "操作";m_model->setHorizontalHeaderLabels(headers);// 隱藏垂直表頭verticalHeader()->setVisible(false);// 設置選擇行為setSelectionBehavior(QAbstractItemView::SelectRows);setSelectionMode(QAbstractItemView::SingleSelection);// 設置每一列固定寬度setColumnWidth(0, 56);setColumnWidth(1, 80);setColumnWidth(2, 184);setColumnWidth(3, 84);setColumnWidth(4, 84);setColumnWidth(5, 450); setColumnWidth(6, 72);horizontalHeader()->setStretchLastSection(false);//不自動拉伸最后一列//表格樣式// 設置表格樣式this->setStyleSheet("QTableView {"" background: transparent;"" font-size: 14px;"" font-family: Microsoft YaHei;"" border: none;"" outline: none;""}""QTableView::item {"" border:0px solid rgb(0,0,0);"" border-bottom:2px solid #272727;"//表格行與行之間的間隔線" padding: 5px;"" background: #424242;""}""QTableView::item:selected {"" background: #7A9165;"" color: #FFFFFF;"" border-bottom: 2px solid #272727 !important;"//表格行與行之間的間隔線"}""QHeaderView {"" background-color: transparent;""}""QHeaderView::section {"" background-color: #343434;"" color: #b8b8b8;"" font-size: 14px;"" font-family: Microsoft YaHei;"" padding: 5px;"" border: none;"" border-bottom: 2px solid #272727;"//表頭與表格之間的橫線"}");// 其他非樣式表設置this->setShowGrid(false); // 徹底關閉網格線繪制,用于隱藏列間隔線this->setFocusPolicy(Qt::NoFocus);this->horizontalHeader()->setHighlightSections(false); // 選中行時表頭不高亮this->setEditTriggers(QAbstractItemView::NoEditTriggers); // 禁止編輯// 設置高度this->verticalHeader()->setDefaultSectionSize(48); // 行高this->horizontalHeader()->setFixedHeight(48); // 表頭高度
}
表格文字居中我是在另一個函數中寫的
QStandardItem *Steer_Electrode_Table::setNameItem(const QString &text)
{QStandardItem* item = new QStandardItem(text);item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 居中return item;
}//點擊某按鈕,觸發增加一行的操作
void Steer_Electrode_Table::addRow(const QString& name, const QString& model, int macroCount, int microCount, const QString& region) {int row = m_model->rowCount();// 添加行數據m_model->insertRow(row);// 序號列,從1開始QStandardItem* indexItem = new QStandardItem(QString::number(row + 1));indexItem->setTextAlignment(Qt::AlignCenter);indexItem->setEditable(false);m_model->setItem(row, 0, indexItem);// 其他數據列,調用setNameItem使文字居中m_model->setItem(row, 1, setNameItem(name));m_model->setItem(row, 2, setNameItem(model));m_model->setItem(row, 3, setNameItem(QString::number(macroCount)));m_model->setItem(row, 4, setNameItem(QString::number(microCount)));m_model->setItem(row, 5, setNameItem(region));// 操作按鈕列setIndexWidget(m_model->index(row, 6), createButtonWidget());
}
參考:
qt中tableWidget中只有行線,沒有列線_qt tablewidget 設置表格線-CSDN博客
因為有一些自定義的操作,所以沒有附上全部代碼,主要還是以參考表格樣式為主,有什么問題可以評論區或私信,看到都會回
--END--