1. 程式人生 > >使用QTableWidget繪製的表格

使用QTableWidget繪製的表格

簡述

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是表格每個小格的類,可以向其中新增文字、控制元件、佈局。