【QT】无边框窗口+背景图片+用户区可拖动
2017-06-15 10:22
621 查看
功能截图:
将非用户区边框隐藏,工具栏隐藏,自定义设置背景图片,用户区域可拖动:代码实现:
1、构造函数中的一系列设置:setWindowFlags(Qt::Window|Qt::FramelessWindowHint); //设置无边框 setAttribute(Qt::WA_TranslucentBackground); //设置背景透明 ui->m_toolBar->setVisible(false); //将工具栏设置不可见
2、构造函数中对成员变量初始化:
m_dragging=false; m_bgImage.load("C:/Users/Maggie/Downloads/bgd.jpg"); //加载背景图片
3、重写虚函数:
private: virtual void paintEvent(QPaintEvent *event); virtual void mousePressEvent(QMouseEvent*event); virtual void mouseMoveEvent(QMouseEvent*event); virtual void mouseReleaseEvent(QMouseEvent*event);
注: *.cpp文件中需要头文件包含:
#include <QPainter> #include <QMouseEvent>
3.1 设置背景图片:
void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); QRect frameRect=rect(); painter.drawPixmap(frameRect,m_bgImage); }
3.2 重写三个虚函数,使用户区可拖动:
void MainWindow::mousePressEvent(QMouseEvent*event) { if(event->button()==Qt::LeftButton) { m_dragging=true; m_mousestart=event->globalPos(); m_framestart=frameGeometry().topLeft(); } //QWidget::mousePressEvent(event); } void MainWindow::mouseMoveEvent(QMouseEvent*event) { if(event->buttons()==Qt::LeftButton&&m_dragging) { QPoint m_mousenow=event->globalPos(); move(m_framestart+m_mousenow-m_mousestart); } // QWidget::mouseMoveEvent(event); } void MainWindow::mouseReleaseEvent(QMouseEvent*event) { if(event->button()==Qt::LeftButton) { m_dragging=false; } // QWidget::mouseReleaseEvent(event); }
4、私有成员变量:
private: QPixmap m_bgImage; bool m_dragging; QPoint m_mousestart; QPoint m_framestart;
相关文章推荐
- Qt无边框背景图片的窗口
- qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
- Qt 不规则窗口(窗口边框隐藏,并能拖动)
- 【Qt编程】基于Qt的词典开发系列<四>--无边框窗口的缩放与拖动
- Qt开发:无边框异形窗口,透明背景,可移动
- Qt5:随窗口大小变化背景图片自动缩放的实现【转】
- qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
- QT中 窗口部件的 背景图片 的设置
- 【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
- Qt中背景图片随窗口自动伸缩
- qt设置窗口的背景图片
- QT中 窗口部件的 背景图片 的设置
- qt4:给你的窗口设置一个背景图片
- 【Qt编程】基于Qt的词典开发系列<五>--无边框窗口的拖动
- QT 窗口背景图片设置(图片自动缩放)
- qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
- Qt5:随窗口大小变化背景图片自动缩放的实现
- 用Qt实现窗体的无边框、可移动、透明不规则显示(需背景透明的图片)
- Qt creator第一个Qt5小程序:显示带背景颜色或图片的QWidget的Hello World窗口
- QT中 窗口部件的 背景图片 的设置