• 8787阅读
  • 9回复

使用 Qt::FramelessWindowHint 后如何对窗体缩放 [复制链接]

上一主题 下一主题
离线likezyp
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-09
请教大家:
我在使用 Qt::FramelessWindowHint 后,就没有了窗体,随之就没有了缩放功能,有没有方法可以实现对窗体的缩放。
使用 Qt::FramelessWindowHint  是为了使用自定义的窗体风格。
谢谢。
离线ashe0817

只看该作者 1楼 发表于: 2013-08-09
最简单的办法是加个状态栏,就可以拖动改变大小了
离线jdwx

只看该作者 2楼 发表于: 2013-08-10
google一下,有一个例子,怎么处理拖动窗口和缩放。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线zhy0808

只看该作者 3楼 发表于: 2013-08-10
在鼠标事件中处理
离线likezyp

只看该作者 4楼 发表于: 2013-08-11
我试试 这个 倒是可以 进行缩放 mouseMoveEvent ,但是同时进行缩放与拖动就有点不好控制
离线likezyp

只看该作者 5楼 发表于: 2013-08-11
回 1楼(ashe0817) 的帖子
这个不是很明白~~~
离线likezyp

只看该作者 6楼 发表于: 2013-08-11
回 2楼(jdwx) 的帖子
这个,http://www.cppblog.com/biao/archive/2013/07/11/201704.aspx 里面用了两个方法,一是用windows消息,这点果然强大。不过自己想实现一个跨平台的程序,这点就有点难办了。

其中 作者说 mousePressEvent  mouseMoveEvent  1.拖快了不行,很容易超过该差值 , 2.窗口抖动的厉害,一直在resize,这个自己道是没有发现,我想最终还是用 mousePressEvent  mouseMoveEvent  比较划算。

mousePressEvent  mouseMoveEvent 处理鼠标区域还是不好控制,现在看看能不能加一个固定区域,实现后再过来发贴。
  
离线likezyp

只看该作者 7楼 发表于: 2013-08-11
回 1楼(ashe0817) 的帖子
是这个么 Qt::WindowTitleHint ?
离线likezyp

只看该作者 8楼 发表于: 2013-08-12
void Widget::mousePressEvent(QMouseEvent * event){
    if(event->x()>this->width()-5){
        isZoom=true;
    }else{
        isZoom=false;
    }

    if (event->button() == Qt::LeftButton){
        dragPosition = event->globalPos() - frameGeometry().topLeft();
        event->accept();
    }
}

void Widget::mouseMoveEvent(QMouseEvent * event){
    if (event->buttons() == Qt::LeftButton){
        if(isZoom){
            setFixedWidth(event->pos().x());
        }else{
            move(event->globalPos()-dragPosition);
            event->accept();
        }
    }
}
离线陈小草
只看该作者 9楼 发表于: 2013-08-17
Qt::FramelessWindowHint    0x00000800    Produces a borderless window. The user cannot move or resize a borderless window via the window system. On X11, the result of the flag is dependent on the window manager and its ability to understand Motif and/or NETWM hints. Most existing modern window managers can handle this.
快速回复
限100 字节
 
上一个 下一个