zoukankan      html  css  js  c++  java
  • Qt 不规则窗体总结

    一、取消窗体标题栏

    1.FramelessWindowHint 无边框,设置FramelessWindowHint后,带来主要问题是无法移动窗口以及无法使用鼠标拖拽缩放窗口大小。

    setWindowFlags(Qt::FramelessWindowHint |Qt::WindowStaysOnTopHint);

    二、移动窗体

    1.event->globalPos()获取的鼠标位置是鼠标偏离电脑屏幕左上角(x=0,y=0)的位置;
    2.pos()获取的位置是主窗口(widget窗口)左上角(边框的左上角,外左上角)相对于电脑屏幕的左上角的(x=0,y=0)偏移位置;

    3.event->globalY()<pos().y()+60 在窗体什么位置移动,通常都是点击住标题栏位置移动窗体。

    bool is_move_window_;
    QPoint move_window_pos_;

    #include <QApplication>
    #include <QMouseEvent>

    void MainWidget::mousePressEvent(QMouseEvent *event)
    {
        is_move_window_ = true;
        move_window_pos_ = event->globalPos() - pos();
        return QWidget::mousePressEvent(event);
    }
    
    void MainWidget::mouseMoveEvent(QMouseEvent *event)
    {
    
        if (is_move_window_ && (event->buttons() && Qt::LeftButton)
           && (event->globalPos()-move_window_pos_).manhattanLength() > QApplication::startDragDistance()
           &&(event->globalY()<pos().y()+60))
        {
          move(event->globalPos()-move_window_pos_);
          move_window_pos_ = event->globalPos() - pos();
        }
    
        return QWidget::mouseMoveEvent(event);
    }
    
    void MainWidget::mouseReleaseEvent(QMouseEvent *event)
    {
        is_move_window_=false;
    }
  • 相关阅读:
    51nod 1125 交换机器的最小代价
    货物运输 51Nod
    hihoCode 1075 : 开锁魔法III
    糖果
    区间 GCD
    poj2186--tarjan+缩点(有向图的强连通分量中点的个数)
    Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]
    回文树介绍
    回文树总结
    140. 后缀数组(hash + 二分 / 后缀数组)
  • 原文地址:https://www.cnblogs.com/ike_li/p/13403291.html
Copyright © 2011-2022 走看看