#include "historytask.h"
|
#include "ui_historytask.h"
|
#include <QDebug>
|
|
namespace Ripples {
|
|
HistoryTask::HistoryTask(QWidget *parent):
|
QWidget(parent),
|
ui(new Ui::HistoryTask),
|
m_weights({1, 7, 3, 2, 2, 2, 2, 2}),
|
m_model(new QStandardItemModel(this))
|
{
|
ui->setupUi(this);
|
// 设置模型有8列
|
m_model->setColumnCount(8);
|
// 设置表头样式
|
ui->tableView->horizontalHeader()->setStyleSheet(R"(
|
QHeaderView::section {
|
background-color: #4682B4;
|
color: white;
|
font-weight: bold;
|
font-size: 14px;
|
padding: 4px;
|
border: 1px solid #dcdcdc;
|
}
|
)");
|
|
// 表头名称
|
const QString headers[] {
|
"序号",
|
"工程名称",
|
"创建时间",
|
"预览",
|
"查看报告",
|
"保存",
|
"复制",
|
"删除",
|
};
|
|
// 设置表头
|
int i = 0;
|
for (auto& header: headers){
|
m_model->setHeaderData(i, Qt::Horizontal, header);
|
i++;
|
}
|
ui->tableView->verticalHeader()->setDefaultSectionSize(60); // 设置表格高度固定为60像素
|
ui->horizontalLayout->setContentsMargins(0, 0, 0, 0);
|
ui->tableView->verticalHeader()->setVisible(false); // 禁用列表头
|
ui->tableView->resize(this->width(), this->height());
|
ui->tableView->setStyleSheet("QTableView {alignment: AlignCenter;}");
|
|
|
ui->tableView->setModel(m_model);
|
|
// 取消编辑和焦点功能
|
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
ui->tableView->setSelectionMode(QAbstractItemView::NoSelection);
|
|
addItem("p1", "123");
|
addItem("p2", "456");
|
addItem("p3", "789");
|
addItem("p4", "101112");
|
addItem("p5", "745345");
|
addItem("p6", "104545");
|
addItem("p5", "745345");
|
addItem("p6", "104545");
|
addItem("p5", "745345");
|
addItem("p6", "104545");
|
|
|
}
|
|
HistoryTask::~HistoryTask()
|
{
|
delete ui;
|
}
|
|
void Ripples::HistoryTask::autoResize(int totalWidth)
|
{
|
// 计算每一列的占比
|
int weightSum = 0;
|
for (int& w: m_weights) weightSum += w;
|
|
if (weightSum <= 0){
|
return;
|
}
|
|
for (int col = 0; col < m_weights.size(); ++col) {
|
int w = totalWidth * m_weights[col] / weightSum;
|
ui->tableView->setColumnWidth(col, w);
|
ui->tableView->horizontalHeader()->setSectionResizeMode(col, QHeaderView::Fixed);
|
}
|
|
}
|
|
void Ripples::HistoryTask::addItem(const QString& name, const QString& path)
|
{
|
int row = m_model->rowCount();
|
|
setProjectIndex(row);
|
setProjectNameAndPath(row, name, path);
|
|
// 获取当前日期时间
|
QDateTime currentDateTime = QDateTime::currentDateTime();
|
// 格式化为字符串
|
QString time = currentDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
setCreateTime(row, time);
|
|
setFunctionIcon(row);
|
}
|
|
void HistoryTask::deleteItem(int row, int column)
|
{
|
m_model->removeRow(row);
|
for (int i = row; i < m_model->rowCount(); ++i){
|
m_model->setData(m_model->index(i, 0), i+1);
|
}
|
|
|
}
|
|
void Ripples::HistoryTask::setProjectIndex(int row)
|
{
|
auto* item = new QStandardItem(QString::number(row + 1));
|
|
// 设置字体
|
QFont font;
|
font.setBold(true);
|
font.setPointSize(15);
|
item->setFont(font);
|
item->setTextAlignment(Qt::AlignCenter);
|
|
m_model->setItem(row, 0, item);
|
}
|
|
void HistoryTask::setProjectNameAndPath(int row, const QString& name, const QString& path)
|
{
|
QLabel* label = new QLabel(this);
|
|
// 设置两行文字,上行文字为项目名字,下行文字为项目所在路径
|
label->setText(QString(
|
"<div style='font-size: 20px;text-indent: 20px;line-height: 1.2'>%1</div>"
|
"<div style='font-size: 14px;color:gray;text-indent: 20px;line-height: 1.2'>%2</div>")
|
.arg(name)
|
.arg(path));
|
|
QModelIndex index = m_model->index(row, 1);
|
ui->tableView->setIndexWidget(index, label);
|
|
}
|
|
void Ripples::HistoryTask::setCreateTime(int row, const QString& time)
|
{
|
auto* item = new QStandardItem(time);
|
// 设置字体
|
QFont font;
|
font.setPointSize(12);
|
item->setFont(font);
|
item->setTextAlignment(Qt::AlignCenter);
|
|
m_model->setItem(row, 2, item);
|
}
|
|
void Ripples::HistoryTask::setFunctionIcon(int row)
|
{
|
QStringList pathList = {
|
":/预览.png",
|
":/查看报告.png",
|
":/保存.png",
|
":/复制.png",
|
":/删除.png"
|
};
|
|
int i = 3;
|
for(auto&& icon : pathList)
|
{
|
QPushButton* button = new QPushButton(this);
|
button->setIcon(QIcon(icon)); // 设置图标
|
button->setIconSize(QSize(35, 35)); // 设置图标大小为35x35像素
|
// 设置按钮样式
|
button->setStyleSheet(
|
"QPushButton {"
|
" border: none"
|
"}"
|
"QPushButton:pressed {"
|
" padding-left: 2px;"
|
" padding-top: 2px;"
|
"}"
|
);
|
|
QModelIndex index = m_model->index(row, i++);
|
ui->tableView->setIndexWidget(index, button);
|
|
connect(button, &QPushButton::clicked, this, [index, this](){
|
|
if(m_model->rowCount() == 1)
|
m_lastModelItemFlag = true;
|
else
|
m_lastModelItemFlag = false;
|
|
if(index.column() == 3)
|
emit previewSignal(index.row(), index.column());
|
else if(index.column() == 4)
|
emit checkSignal(index.row(), index.column());
|
else if(index.column() == 5)
|
emit saveSignal(index.row(), index.column());
|
else if(index.column() == 6)
|
emit copySignal(index.row(), index.column());
|
else if(index.column() == 7)
|
deleteItem(index.row(), index.column());
|
});
|
|
}
|
}
|
|
void HistoryTask::resizeEvent(QResizeEvent* event)
|
{
|
QWidget::resizeEvent(event);
|
QSize newSize = event->size();
|
|
autoResize(newSize.width());
|
}
|
|
|
} // namespace Ripples
|