#pragma once #include "iDlgBase.h" /// @brief 基础窗体类,实现 如下功能 /// (1) 在右下或者左上绘制按钮,实现一些简单的折叠功能 class X_GUI_BASE_EXPORT iDlgBaseEx : public iDlgBase { Q_OBJECT public: explicit iDlgBaseEx(QWidget *parent = 0); ~iDlgBaseEx(); // 是否启用 void setUseMode(bool b); bool isUseMode(); // 设置Btn的位置(针对全局) void setBtnPos(RectPos o); // 按钮范围 QRect getBtnRect(); // 按钮图标 // 可以为全路径,或者图标名称(不带后缀) // 如果sIcon2非空,则轮换 void setBtnIcons(QString sIcon1, QString sIcon2 = ""); protected: virtual void paintEvent(QPaintEvent *e); virtual void paintBtn(QPainter *pPainter, bool bHovering); virtual void resizeEvent(QResizeEvent *e); virtual void mouseMoveEvent(QMouseEvent *mouseEvent); virtual void mousePressEvent(QMouseEvent *mouseEvent); virtual void leaveEvent(QEvent *e); protected: void calBtnRect(); // 虚拟按钮的响应 // 如果返回true,则不再触发信号,否则触发 virtual bool runByVirtualBtn(); signals: void sigRunByBtn(bool bShowFirstIcon); void sigShowParam(bool IsShow); private slots: // void slotWxImageInit(); // void slotIsAddBt(bool IsAdd); protected: // 是否启用 bool m_bUseMode; // 鼠标Hover,内部使用变量 bool m_bHover; // 矩形框大小 QRect m_rtBtn; // 图标 QString m_sIcon1; QString m_sIcon2; // 位置信息 RectPos m_oPos; };