hyperk-021
2025-06-05 8c679ef19e9d5c33947cdf1cc1e5550e3d442308
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#pragma once
 
#include <QWidget>
#include <QStandardItemModel>
#include <QHeaderView>
#include <QVector>
#include <QResizeEvent>
#include <QLabel>
#include <QPushButton>
#include <QString>
#include <QIcon>
#include <QDateTime>
#include <QHash>
 
namespace Ripples {
 
namespace Ui {class HistoryTask;}
 
class HistoryTask : public QWidget
{
    Q_OBJECT
public:
    explicit HistoryTask(QWidget *parent = nullptr);
    ~HistoryTask();
 
    // 将表格宽度按比例进行划分
    void autoResize(int totalWidth);
 
    // 对外添加item的接口,暂定只传入项目名称和所在路径,创建时间可通过调用该函数直接获取
    void addItem(const QString& name, const QString& path);
 
signals:
    void previewSignal(int row, int column);
    void copySignal(int row, int column);
    void saveSignal(int row, int column);
    void checkSignal(int row, int column);
 
private:
    Ui::HistoryTask *ui;
    // 重写resize事件,让QTableView能自适应缩放
    void resizeEvent(QResizeEvent* event) override;
    // 添加项目序号
    void setProjectIndex(int row);
    // 添加项目名称和所在路径
    void setProjectNameAndPath(int row, const QString& name, const QString& path);
    // 添加创建时间
    void setCreateTime(int row, const QString& time);
    // 在指定行中添加对应的5个功能按钮
    void setFunctionIcon(int row);
    // 删除tableView中的指定行
    void deleteItem(int row, int column);
 
private:
    // 每一列的宽度比例
    QVector<int> m_weights;
    QStandardItemModel* m_model;
 
    // 存储索引与按钮之间的hash图
    QHash<QModelIndex*, QWidget*> m_indexMapWithBtn;
 
    bool m_lastModelItemFlag;
 
};
 
} // namespace Ripples