#include <QDateTime>
#include "QTimer"
#include "QAbstractItemModel"
class QVBoxLayout;
class GlodonTableView;
class QModelIndex;
class QLabel;
class QPropertyAnimation;
class ToolTipParam
{
public:
ToolTipParam() :
m_sizeMinTip(80, 60),
m_sizeMaxTip(0, 0),
m_sizeArrow(19, 9),
m_nRowHeight(20),
m_nTimeFadeOut(1000),
m_nTimeRemain(3000),
m_fontText(QFont("Microsoft YaHei", 12, QFont::Normal)),
m_colorText(Qt::black),
m_sizeIcon(16, 16),
m_pParentWidget(NULL),
m_strIconPath("xxx.png"),
m_strText(QString(""))
{
}
ToolTipParam & operator = (const ToolTipParam & param)
{
m_strIconPath = param.m_strIconPath;
m_nRowHeight = param.m_nRowHeight;
m_strText = param.m_strText;
m_fontText = param.m_fontText;
m_colorText = param.m_colorText;
m_nTimeRemain = param.m_nTimeRemain;
m_nTimeFadeOut = param.m_nTimeFadeOut;
m_sizeArrow = param.m_sizeArrow;
m_sizeMinTip = param.m_sizeMinTip;
m_sizeMaxTip = param.m_sizeMaxTip;
m_sizeIcon = param.m_sizeIcon;
m_pParentWidget = param.m_pParentWidget;
return *this;
}
QString m_strIconPath; // 图标路径
QSize m_sizeIcon; // 图标尺寸
QString m_strText; // 文字
QFont m_fontText; // 字体
QColor m_colorText; //文字颜色
int m_nRowHeight; // 文字行高
int m_nTimeRemain; // 停留时间(毫秒)
int m_nTimeFadeOut; // 淡出时间(毫秒)
QSize m_sizeArrow; // layout的外边距
QSize m_sizeMinTip; // tip控件的大小
QSize m_sizeMaxTip; // tip的换行大小
QWidget *m_pParentWidget; // 被指向的widget(父窗体)
};
class ToolTipWidget : public QWidget
{
Q_OBJECT
public:
static void showToolTip(QWidget * pParent, const QString &strShowText); //使用时直接调用这个接口就可以
static void tableViewShowToolTip(QWidget *pTableView, const QModelIndex& oIndex, const QString& strShowText, bool bIsTableView = false); //tableView可以直接调用该静态方法
static void closeTip(QWidget * pParent = nullptr); //关闭提示
virtual void ImmediateCloseTip(); // 立即关闭,并销毁
virtual QPoint calcPosOfpParentWidget(); //
bool isStartFadeOut(); // 判断是否开始渐变退出
void tipShowLocal(); //tip出现的位置,父窗体的上方
void startTimer(void); //
void initUI();
void initConnect();
QPainterPath buildRoundRectTip(); //画圆角提示框
void stopTime();
~ToolTipWidget();
protected:
virtual void showEvent(QShowEvent * pEvent);
virtual void paintEvent(QPaintEvent * pEvent);
virtual void mouseReleaseEvent(QMouseEvent *pEvent);
virtual bool eventFilter(QObject *pObj, QEvent *pEvent);
virtual void enterEvent(QEvent *pEvent);
virtual void leaveEvent(QEvent *pEvent);
private:
explicit ToolTipWidget(ToolTipParam & oTipParam, QWidget *pParent = nullptr, const QModelIndex oIndex = QModelIndex(), bool bIsShowTotalQty = false);
protected slots:
void slotCloseTimer();
void slotFadeout();
void slotMoveTimer();
private:
static ToolTipParam m_TipParam;
QLabel *m_pLabelIco; // 图标
QLabel *m_pLabelText; // 内容文字区
QVBoxLayout *m_pLayoutLeft;
QVBoxLayout *m_pLayoutRight;
QTimer *m_pTimerClose; // 关闭定时器
QTimer *m_pTimerMovePos; // 移动定时器