使用QTableWidget繪製的表格
阿新 • • 發佈:2018-12-10
簡述
QTableWidget是qt自帶的表格控制元件,可以方便的繪製表格。實現效果如下所示:
程式碼之路
標頭檔案包含宣告
private:
QTableWidget* m_tableWidget;
QLabel* m_label;
QVBoxLayout* m_vlayout; //介面佈局
原始檔的表格初始化
void Page::initWidget() { //標題 m_label = new QLabel(QStringLiteral("使用者管理")); QFont font_label = m_label->font(); font_label.setBold(true); font_label.setPointSize(13); m_label->setFont(font_label); //設定字型 //表 m_tableWidget = new QTableWidget(); m_tableWidget->setColumnCount(5); //設列數 m_tableWidget->setHorizontalHeaderLabels(QStringList() <<""<<QStringLiteral("序號")<<QStringLiteral("賬號") \ <<QStringLiteral("備註")<<QStringLiteral("許可權")); //設列標題 m_tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); //設定列的縮放 m_tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); m_tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch); m_tableWidget->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch); m_tableWidget->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Stretch); m_tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //設定選擇方式 m_tableWidget->verticalHeader()->setHidden(true); //設定行標題隱藏 m_tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //設定表格內容不可修改 m_tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(40,151,210);color:white;}"); //設定標題顏色 //佈局 m_vlayout = new QVBoxLayout; setLayout(m_vlayout); m_vlayout->addWidget(m_label); m_vlayout->addWidget(m_tableWidget); }
checkbox點選的訊號槽函式
void Page::onCheckbox() { QCheckBox* senderObj = qobject_cast<QCheckBox*>(sender()); if (senderObj == 0) { return; } QModelIndex index = m_tableWidget->indexAt(QPoint(senderObj->frameGeometry().x(), senderObj->frameGeometry().y())); unsigned int i = static_cast<unsigned int>(index.row()); if (senderObj->isChecked()) { m_usernumStatus[i] = 1; //用來儲存是否點選checkbox的陣列 } else { m_usernumStatus[i] = 0; } }
小結
QTableWidget類提供一個基礎的表格類,QTableWidgetItem是表格每個小格的類,可以向其中新增文字、控制元件、佈局。