QDialog 可移动

来源:互联网 发布:inpho软件 编辑:程序博客网 时间:2024/04/30 13:11

重写QDialog 的 void mousePressEvent(QMouseEvent *event)、 void mouseMoveEvent(QMouseEvent *event)、void mouseReleaseEvent(QMouseEvent *event) 三个函数,实现拖动QDialog标题栏移动QDialog的功能。
.h文件中定义如下成员变量
代码如下:

   protected:    void showEvent(QShowEvent *);    virtual void mousePressEvent(QMouseEvent *event);    virtual void mouseMoveEvent(QMouseEvent *event);    virtual void mouseReleaseEvent(QMouseEvent *event);   private:    bool m_bMovable;    QPoint m_lastMousePos;    QLabel* m_pTitleLabel;   

.cpp中代码入下:

void mousePressEvent(QMouseEvent *event){     QPoint point = event->pos();     QRect rect = m_pTitleLabel->rect();     if (rect.contains(point))     {         m_bMovable = true;         m_lastMousePos = event->globalPos();     }     else     {         m_bMovable = false;     }}void mouseMoveEvent(QMouseEvent *event){    if (m_bMovable)    {        move(event->globalPos() - m_lastMousePos + pos());        m_lastMousePos = event->globalPos();    }}void mouseReleaseEvent(QMouseEvent *event){       m_bMovable = false;}
原创粉丝点击