QT的setwindowflags的性子总括,Qt中落到实处无边框的窗体

by admin on 2019年4月24日

:setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义

:setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义

QT的setwindowflags的品质总计,qtsetwindowflags

:setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义

setWindowFlags(Qt::Window迷你mizeButtonHint);//设置窗口的标题栏唯有最小化的开关

setWindowFlags( Qt::WindowCloseButtonHint
);//设置窗口的标题栏唯有关闭的按键

QT的setwindowflags的性子总括,Qt中落到实处无边框的窗体。setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗体一向置顶,并且不会抢宗旨

 

:setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义
setWindowFlags(Qt::WindowMinimizeButtonHint);/…

Qt中贯彻无边框的窗体,qt完毕边框窗体

setWindowFlags(Qt::WindowMinimizeButtonHint);//设置窗口的标题栏唯有最小化的按键

QT的setwindowflags的性子总括,Qt中落到实处无边框的窗体。setWindowFlags(Qt::WindowMinimizeButtonHint);//设置窗口的标题栏唯有最小化的按钮

1 自定义窗体类承继自QWidget

 

setWindowFlags( Qt::WindowCloseButtonHint
);//设置窗口的标题栏唯有关闭的开关

setWindowFlags( Qt::WindowCloseButtonHint
);//设置窗口的标题栏唯有关闭的按键

贰 在构造函数中设置无边框效果

setWindowFlags(Qt::FramelessWindowHint);//无边框   
setAttribute(Qt::WA_TranslucentBackground);//背景透明

 

setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗体一贯置顶,并且不会抢主旨

setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗体平素置顶,并且不会抢宗旨

三 达成鼠标拖动窗口

    
无边框窗口未有了标题栏,不可能通过鼠标来运动窗口。可行的章程是重写窗口的鼠标按下,移动和释放等事件。

    
为了模仿类似拖动标题栏来运动窗口,能够规定当鼠标单击在有个别特定的区域(举个例子顶部中度为拾0的矩形区域)能力活动窗口。

    上边是叁个无穷境框背景透明的窗体类的代码:

//头文件:BaseWidget.h
#ifndef BASEWIDGET_H
#define BASEWIDGET_H

#include <QWidget>
#include <QMouseEvent>

//继承自QWidget的自定义窗口,单击(左右键皆可)窗口并移动鼠标可拖动窗口
class BaseWidget : public QWidget
{
  Q_OBJECT
public:
  explicit BaseWidget(QWidget *parent = 0);

  //设置鼠标按下可移动窗口的区域,在子窗口中必须设置该区域
  void setAreaMovable(const QRect rt);

protected:
  void mousePressEvent(QMouseEvent *);
  void mouseMoveEvent(QMouseEvent *);
  void mouseReleaseEvent(QMouseEvent *);

private:
  QRect m_areaMovable;//可移动窗口的区域,鼠标只有在该区域按下才能移动窗口
  bool m_bPressed;//鼠标按下标志(不分左右键)
  QPoint m_ptPress;//鼠标按下的初始位置
};

#endif // BASEWIDGET_H

 

源文件:BaseWidget.cpp
#include "basewidget.h"
#include <QDebug>

BaseWidget::BaseWidget(QWidget *parent) :
  QWidget(parent)
{
  //设置无边框透明
  setWindowFlags(Qt::FramelessWindowHint);//无边框
  setAttribute(Qt::WA_TranslucentBackground);//背景透明

  m_areaMovable = geometry();
  m_bPressed = false;
}

void BaseWidget::mousePressEvent(QMouseEvent *e)
{
  //鼠标左键
  if(e->button() == Qt::LeftButton)
  {
  m_ptPress = e->pos();
  qDebug() << pos() << e->pos() << m_ptPress;
  m_bPressed = m_areaMovable.contains(m_ptPress);
  }
}

void BaseWidget::mouseMoveEvent(QMouseEvent *e)
{
  if(m_bPressed)
  {
  qDebug() << pos() << e->pos() << m_ptPress;
  move(pos() + e->pos() - m_ptPress);
  }
}

void BaseWidget::mouseReleaseEvent(QMouseEvent *)
{
  m_bPressed = false;
}

//设置鼠标按下的区域
void BaseWidget::setAreaMovable(const QRect rt)
{
  if(m_areaMovable != rt)
  {
  m_areaMovable = rt;
  }
}

 

 this->setWindowFlags(this->windowFlags());//设置窗口为QT的暗中认可属性

 this->setWindowFlags(this->windowFlags());//设置窗口为QT的暗许属性

4 模拟“最大化”“最小化”“关闭”按钮

     最简易的方法是采取布局,在窗口顶部左侧一重放“最大化”“最小化”“关闭”
二个按键,实现对应的职能就能够,此处就不一一列出。

home88一必发 ,     如若想迅速达成无边框的窗体,只需再而三BaseWidget 类就能够。

1自定义窗体类承继自QWidget 二 在构造函数中设置无边框效果
setWindowFlags(Qt::FramelessWindowHint); // 无边…

this->setWindowFlags(Qt::FramelessWindowHint));//设置窗体无边框,不可拖动拖拽拉伸

this->setWindowFlags(Qt::FramelessWindowHint));//设置窗体无边框,不可拖动拖拽拉伸

this->setWindowModality(Qt::WindowModal); //设置窗体为模态

this->setWindowModality(Qt::WindowModal); //设置窗体为模态

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图