简述
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是表格每个小格的类,可以向其中添加文字、控件、布局。