logplus/Workflow/WFWidget/include/PaiTableWidget.h

209 lines
5.7 KiB
C
Raw Permalink Normal View History

2026-01-17 12:55:45 +08:00
/**
* @file PaiTableWidget.h
* @brief PaiTableWidget P.A.I系统定制发布的表格控件
* @date 2012-04-27
*/
#ifndef PAI_FRAME_WIDGET_PAITABLEWIDGET_H
#define PAI_FRAME_WIDGET_PAITABLEWIDGET_H
#include <QTableWidget>
#include <QContextMenuEvent>
#include "Turtle.h"
class QCheckBox;
namespace pai
{
namespace gui
{
/**
* @class PaiTableWidget
* @brief PaiTableWidget P.A.I系统定制发布的表格控件
*/
class PAI_WIDGET_EXPORT PaiTableWidget : public QTableWidget
{
Q_OBJECT
public:
/**
* @brief
* @param[in] pParent
*/
PaiTableWidget(QWidget *pParent = NULL);
/**
* @brief
*/
virtual ~PaiTableWidget();
/**
* @brief
* @param[in] ok
* @param[in] maxRowCount
*/
void SetAutoHeight(const bool ok, const int maxRowCount = 10);
/**
* @brief
* @param[in] rowIndex
* @param[in] count ,
*/
void RemoveRows(const int rowIndex, const int count);
/**
* @brief
*/
void RemoveRows();
/**
* @brief
* @param[in] horizontalLine 线
* @param[in] verticalLine 线
*/
virtual void setShowGrid(bool horizontalLine, bool verticalLine);
/**
* @brief
* @param[in] message
*/
void ShowPromptMessage(const QString & message);
/**
* @brief
* @param[in] message
*/
void SetFilterEmptyMessage(const QString & message);
/**
* @brief
* @param[in] selectable
*/
void SetColumnVisibleSelectable(bool selectable);
/**
* @brief
* @param[in] columnList
*/
void SetUnselectableColumns(const QStringList & columnList);
/**
*@brief
*/
void RecallMemberedSections();
/**
* @brief ,CheckBox.()
* @param[in] logicalIndex
* @param[in] checkable
* @param[in] pCheckBox CheckBoxcheckable为false
*/
void SetColumnCheckable(const int logicalIndex, const bool checkable, QCheckBox *pCheckBox = NULL);
public slots:
/**
* @brief
* @param[in] keyword
* @param[in] column
*/
void Filter(const QString & keyword, int column = 0);
/**
* @brief
* @param[in] keyword
* @param[in] columns
* @param[in] ignoreLines
*/
void Filter(const QString & keyword, QList<int> columns, QList<int> ignoreLines = QList<int>());
/**
* @brief 使HeaderView的CheckBox
* @param[in] column
*/
void insertColumn(int column);
/**
* @brief 使HeaderView的CheckBox
* @param[in] column
*/
void removeColumn(int column);
protected:
/**
* @brief
* @param[in] rowIndex
* @return
*/
virtual bool Filter(int rowIndex);
/**
* @brief
* @param[in] pEvent
*/
virtual void paintEvent(QPaintEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void contextMenuEvent(QContextMenuEvent *pEvent);
/**
* @brief
* @param[in] pEvent
*/
virtual void keyPressEvent(QKeyEvent *pEvent);
private:
/**
* @brief
*/
void RememberCurrentSections();
private slots:
/**
* @brief
*/
void ResetTableHeight();
/**
* @brief
*/
void RowCountChanged();
/**
* @brief
*/
void SetClipboard();
/**
* @brief
* @param[in] pItem
*/
void TableItemChanged(QTableWidgetItem *pItem);
protected:
QString m_FilterKeyword; ///< 最近一次过滤的关键字
private:
bool m_AutoHeight; ///< 自动调整高度
bool m_ShowFilterEmptyMessage; ///< 显示搜索空提示
int m_AutoHeightMaxRowCount; ///< 最大行数
QString m_MessageWhileFilterEmpty; ///< 空提示文本
QString m_PromptMessage; ///< 提示文本
QList<int> m_FilterColumns; ///< 最近一次过滤的的列
QList<int> m_IgnoreLines; ///< 最近一次忽略搜索的行
int m_IgnoreHeight; ///< 忽略行的高度,用于显示提示信息
signals:
/**
* @brief
* @param[in] count
*/
void RowCountChanged(const int count);
};
}
}
#endif ///< PAI_FRAME_WIDGET_PAITABLEWIDGET_H