#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
/* 设置主窗体的大小与位置 */
this->setGeometry(0, 0, 800, 480);
/* 实例化 */
tableWidget = new QTableWidget(this);
/* 设置tableWidget表居中 */
setCentralWidget(tableWidget);
/* 设置列数 */
tableWidget->setColumnCount(2);
/* 设置行数 */
tableWidget->setRowCount(10);
/* 设置列宽 */
tableWidget->setColumnWidth(0,350);
tableWidget->setColumnWidth(1,350);
/* 使用标签设置水平标题标签 */
tableWidget->setHorizontalHeaderLabels(QStringList()<<"温度(℃)"<<"时间(S)" );
/* 设置选中背景色 */
tableWidget->setStyleSheet("selection-background-color:lightblue;");
/* 开启交替行背景色 */
tableWidget->setAlternatingRowColors(true);
/* 设置整行选中的方式 */
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
/* 设置为可以选中多个目标,按ctrl键 */
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
/* 按行填写内容并设置每个单元格格式 */
for (int row = 0; row < tableWidget->rowCount() ; row++)
{
/* 填写单元格内容 */
tableWidget->setItem(row,0,new QTableWidgetItem("20"));
tableWidget->setItem(row,1,new QTableWidgetItem("10"));
/* 设置文本居中对齐 */
tableWidget->item(row,0)->setTextAlignment(Qt::AlignCenter);
tableWidget->item(row,1)->setTextAlignment(Qt::AlignCenter);
/* 获取原有字体设置 */
QFont font = tableWidget->item(row,0) ->font();
/* 设置为粗体 */
font.setBold(true);
/* 字体大小 */
font.setPointSize(12);
/* 字体颜色 */
tableWidget->item(row,0)->setTextColor(Qt::red);
/* 设置字体 */
tableWidget->item(row,0)->setFont(font);
}
/* 打开右键菜单 */
tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
/* 添加按钮 */
m_menu = new QMenu(this);
m_actionAdd = new QAction("添加",m_menu);
connect(m_actionAdd,&QAction::triggered,this,&MainWindow::slotAdd);
/* 删除按钮 */
m_actionDel = new QAction("删除",m_menu);
connect(m_actionDel,&QAction::triggered,this,&MainWindow::slotDel);
/* 清空按钮 */
m_actionEmpty = new QAction("清空",m_menu);
connect(m_actionEmpty,&QAction::triggered,this,&MainWindow::sloEmpty);
/* 添加添加按钮 */
m_menu->addAction(m_actionAdd);
/* 添加删除按钮 */
m_menu->addAction(m_actionDel);
/* 添加清空按钮 */
m_menu->addAction(m_actionEmpty);
connect(tableWidget,&QTableWidget::customContextMenuRequested,this,&MainWindow::slotPopMenu);
}
/* 添加单元格 */
void MainWindow::slotAdd()
{
/* 获取选中行号 */
int row = tableWidget->currentRow();
/* 当没有任何选中目标时row返回值为-1 */
/* 这是将在第一行添加 */
if(row>=0)
{
/* 在选中行号位置添加新行 */
tableWidget->insertRow(row);
/* 添加内容 */
tableWidget->setItem(row,0,new QTableWidgetItem("20"));
tableWidget->setItem(row,1,new QTableWidgetItem("10"));
/* 文字水平居中 */
/* 如需字体格式参上 */
tableWidget->item(row,0)->setTextAlignment(Qt::AlignCenter);
tableWidget->item(row,1)->setTextAlignment(Qt::AlignCenter);
}else{
row = 0;
/* 在选中行号位置添加新行 */
tableWidget->insertRow(row);
/* 添加内容 */
tableWidget->setItem(row,0,new QTableWidgetItem("20"));
tableWidget->setItem(row,1,new QTableWidgetItem("10"));
/* 文字水平居中 */
/* 如需字体格式参上 */
tableWidget->item(row,0)->setTextAlignment(Qt::AlignCenter);
tableWidget->item(row,1)->setTextAlignment(Qt::AlignCenter);
}
}
/* 删除单元格 */
void MainWindow::slotDel()
{
/* 获取总行数 */
int row = tableWidget->currentRow();
/* 当没有任何选中目标时row返回值为-1 */
if(row>0)
tableWidget->removeRow(row);
}
/* 清空单元格 */
void MainWindow::sloEmpty()
{
/* 获取总行数 */
int row = tableWidget->rowCount();
for(;row>=0;row--)
tableWidget->removeRow(row);
}
/* 右键弹窗位置 */
void MainWindow::slotPopMenu(const QPoint &pos)
{
m_menu->exec(tableWidget->mapToGlobal(pos));
}
MainWindow::~MainWindow()
{
}