yhkylin-backup-tools/kybackup/component/backuplistwidget.h

96 lines
2.3 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef REMOVABLELISTWIDGET_H
#define REMOVABLELISTWIDGET_H
#include <QListWidget>
#include <QStringList>
#include <QDropEvent>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include "mylabel.h"
#include "pixmaplabel.h"
class MyItemWidget : public QWidget
{
Q_OBJECT
public:
explicit MyItemWidget(QWidget* parent = nullptr, QListWidgetItem *item = nullptr);
virtual ~MyItemWidget();
void setSize(int width, int height);
void setText(const QString& text);
QString text() {
return m_text;
}
signals:
void selected(bool checked);
void deleteItem();
void setScrollWidth(int width);
void resetItemWidth(int width);
private:
QString m_text;
MyLabel *m_label;
QPushButton *m_buttonDelete;
int m_scrollWidth = 0; //父窗口QListWidget的滚动条宽度
int m_extWidth = 0; //去掉父窗口QListWidget的父窗口QFrame的右侧边距时扩展的宽度
bool m_checked = false;
QListWidgetItem *m_item;
};
class BackupListWidget : public QListWidget
{
Q_OBJECT
public:
explicit BackupListWidget(QWidget *parent = nullptr, QHBoxLayout *parentLayout = nullptr);
virtual ~BackupListWidget();
// 添加列表项注意使用本类的功能不能用addItem等基类添加项的方法
bool appendItem(const QString &text);
// 判断列表项是否包含text注意使用时不能用findItems等基类查找方法
bool contains(const QString &text);
// 获取备份路径列表
QStringList getBackupPaths() { return m_List; }
// 设置备份路径限制为只能是pathLimit或其子路径
void setPathLimit(const QStringList &pathLimit) { m_pathLimit.append(pathLimit); }
// 清空
void clearData() {
this->clear();
this->m_List.clear();
emit this->deleteEmpty();
m_plusLogo->setVisible(true);
m_plusText->setVisible(true);
}
protected:
void dropEvent(QDropEvent *e);
signals:
void deleteEmpty();
void addedItem();
void setScrollWidth(int width);
void resetItemWidth(int width);
private:
bool checkPathLimit(const QString &path);
private:
PixmapLabel *m_plusLogo;
QLabel *m_plusText;
int m_type = QListWidgetItem::ItemType::UserType + 1;
QStringList m_List;
QStringList m_pathLimit;
QHBoxLayout *m_parentLayout;
};
#endif // REMOVABLELISTWIDGET_H