zoukankan      html  css  js  c++  java
  • Qt 圆角矩形+鼠标左键拖动窗口

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 
     6 namespace Ui {
     7 class MainWindow;
     8 }
     9 
    10 class MainWindow : public QMainWindow
    11 {
    12     Q_OBJECT
    13 
    14 public:
    15     explicit MainWindow(QWidget *parent = 0);
    16     ~MainWindow();
    17 
    18 protected:
    19     void paintEvent(QPaintEvent *event);
    20     void mousePressEvent(QMouseEvent *event);
    21     void mouseMoveEvent(QMouseEvent *event);
    22     void mouseReleaseEvent(QMouseEvent *event);
    23 
    24 private:
    25     Ui::MainWindow *ui;
    26 
    27     QPoint m_pos;
    28     bool m_drag;
    29 };
    30 
    31 #endif // MAINWINDOW_H
     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 
     4 #include <QPainter>
     5 #include <QBitmap>
     6 #include <QMouseEvent>
     7 
     8 MainWindow::MainWindow(QWidget *parent)
     9     : QMainWindow(parent),
    10       ui(new Ui::MainWindow)
    11 {
    12     ui->setupUi(this);
    13 
    14     ui->menuBar->close();
    15     ui->mainToolBar->close();
    16     ui->statusBar->close();
    17 
    18     setFixedSize(400, 300);
    19     setWindowFlags(Qt::FramelessWindowHint);
    20 
    21     m_drag = false;
    22 }
    23 
    24 MainWindow::~MainWindow()
    25 {
    26     delete ui;
    27 }
    28 
    29 void MainWindow::paintEvent(QPaintEvent *event)
    30 {
    31     Q_UNUSED(event);
    32     QBitmap bitmap(this->size());
    33     QPainter painter(&bitmap);
    34     painter.fillRect(this->rect(), Qt::white);
    35     painter.setBrush(QColor(0, 0, 0));
    36     painter.setRenderHint(QPainter::Antialiasing);
    37     painter.setPen(QPen(Qt::blue, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
    38     painter.drawRoundedRect(this->rect(), 4, 4);
    39     this->setMask(bitmap);
    40 }
    41 
    42 void MainWindow::mousePressEvent(QMouseEvent *event)
    43 {
    44     if (Qt::LeftButton == event->button()) {
    45         m_drag = true;
    46         m_pos = event->pos();
    47     }
    48 }
    49 
    50 void MainWindow::mouseMoveEvent(QMouseEvent *event)
    51 {
    52     Q_UNUSED(event);
    53 
    54     if (m_drag) {
    55         this->move(event->globalPos() - m_pos);
    56     }
    57 }
    58 
    59 void MainWindow::mouseReleaseEvent(QMouseEvent *event)
    60 {
    61     Q_UNUSED(event);
    62     m_drag = false;
    63 }
  • 相关阅读:
    C#脚本引擎 CS-Script 之(一)——初识
    系分过了,mark一下,就从这里开始吧
    Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
    Android--多选自动搜索提示
    Android--自动搜索提示
    Android--图片集
    Android--下拉框
    SQL Server 收缩日志
    Android--按钮点击事件
    Android--TextView 文字显示和修改
  • 原文地址:https://www.cnblogs.com/ykzou/p/5408842.html
Copyright © 2011-2022 走看看