QT常用代码记录1(窗口无边框和拖动)

常用代码片记录1

窗口无边框

setWindowFlags(Qt::FramelessWindowHint);
setWindowFlags(Qt::CustomizeWindowHint);

//从其他博客中摘录的部分
Qt::CustomizeWindowHint //标题栏也没有 按钮也没有
Qt::WindowTitleHint //窗口只有一个关闭按钮
Qt::WindowSystemMenuHint //窗口只有一个关闭按钮
Qt::WindowCloseButtonHint //窗口只有一个关闭按钮
Qt::WindowMaximizeButtonHint //最小化按钮不可用,关闭按钮不可用,也就是只有最大化可用
Qt::WindowMinimizeButtonHint //还原按钮不可用
Qt::SubWindow //窗口没有按钮但是有标题栏
Qt::Desktop //没有显示在桌面也没在任务。但是任务管里器里还是有的

作者:炫彩灵感 
来源:CSDN 
原文:https://blog.csdn.net/xuancailinggan/article/details/48176325 
版权声明:本文为博主原创文章,转载请附上博文链接!

窗口拖动代码 .h文件

/*窗口移动*/
protected:
    void mousePressEvent(QMouseEvent *e);
    void mouseMoveEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *e);
private:
    bool _is_down;
    QPoint _point;

.cpp文件

/*实现窗口移动*/
void Channel::mousePressEvent(QMouseEvent *e)
{
    if(e->button() != Qt::LeftButton)
        return;
    
    /*label_title是一个当做标题栏的标签*/
    int x = ui->label_title->x();
    int y = ui->label_title->y();
    int rx = ui->label_title->width();
    int ry = ui->label_title->height();
    int cur_x = e->pos().x();
    int cur_y = e->pos().y();
    if(cur_x>x && cur_y>y && cur_x<rx+x && cur_y<ry+y)
    {
        _is_down = true;
        _point = e->globalPos();
    }


}
void Channel::mouseMoveEvent(QMouseEvent *e)
{

        if(_is_down)
        {
            QPoint n_pos = e->globalPos();
            QPoint update_pos = mapToParent(n_pos - _point);
            move(update_pos);
            _point = n_pos;
        }

}
void Channel::mouseReleaseEvent(QMouseEvent *)
{
    _is_down = false;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值