QML写的无边框圆角界面窗口缩放时闪烁严重,求助~~

wo9aishuai 2015-11-05 10:22:30
使用QML写了个UI,无边框圆角,菜单栏使用Canvas贴的圆角图片,自己写了个可以缩放的边框,但是在使用鼠标进行拖拽缩放时候,窗口闪烁,请教怎样处理才能不闪烁啊。。。。

菜单贴图代码:
Canvas {
anchors.fill: parent
contextType: "2d";
property string menuBak: "images/icons/menuBak.png";

onPaint: {
context.lineWidth=4;
context.strokeStyle="#494444";
context.reset();
context.beginPath();
context.moveTo(0,parent.height);
context.lineTo(0,10);
context.arc(10,10,10,Math.PI,Math.PI*3/2,false);
context.lineTo(parent.width-10,0);
context.arc(parent.width-10,10,10,Math.PI*3/2,0,false);
context.lineTo(parent.width,parent.height);
context.clip();
context.drawImage(menuBak,0,0,parent.width,parent.height);
context.stroke();
context.restore();
}
Component.onCompleted: loadImage(menuBak);
onImageLoaded: requestPaint();
}


边框拖拽缩放代码,只贴一个方向,其他方向类似:
MouseArea {
id: topLeft
cursorShape: Qt.SizeFDiagCursor;
height: 8
width: 8
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: parent.top
anchors.topMargin: 0

onPressed: {
clickPos = Qt.point(mouse.x,mouse.y);
}

onPositionChanged: {
var delta = Qt.point(mouse.x-clickPos.x,mouse.y-clickPos.y);
mainwindow.setX(mainwindow.x+delta.x);
mainwindow.setY(mainwindow.y+delta.y);
mainwindow.setWidth(mainwindow.width-delta.x);
mainwindow.setHeight(mainwindow.height-delta.y);
}
}


...全文
1945 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸冰小子 2018-09-05
  • 打赏
  • 举报
回复
大神可以教我做圆体窗口吗
草上爬 2017-11-22
  • 打赏
  • 举报
回复
引用 2 楼 dell_tx 的回复:
我也遇到过这样的问题,使用布局管理界面,然后鼠标拖拽时根据鼠标移动的距离改变窗口大小然后就闪屏,(更奇怪的是纵向拉伸很正常,横向就会闪)不知何解
不止是QML,在使用Web Engine的时候也会出现闪烁的问题,原因也是这个。
yeliu 2017-01-11
  • 打赏
  • 举报
回复 2
出现同样的问题 main函数下设置属性 QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
ysm18108 2016-11-02
  • 打赏
  • 举报
回复
你做这么多 是不是为了解决屏幕分辨率更改时 拉伸了圆角而导致变形, 其实有个办法不错,用BorderImage将四个角锁定(具体你可以看帮助文档) 这样拉伸的部位就没有圆角
自由冲击波 2016-04-09
  • 打赏
  • 举报
回复
这个问题基本无解,用QML做开发,迟早会撞上致命的闪烁或反应滞后的问题,应该说这是QML还在发展当中,技术磨合还远远不够,所以才会有这样的问题。 官方技术问答上也有一堆这样的问题,基本靠谱的说法是显卡及对OPEN GL的支持问题。不过最悲剧的莫过于,你开发机上一切丝般顺滑,但客户机的显卡及驱动没有那么强大,于是各种闪顿,于是就没有于是了,程序猿已经器晕在厕所了。 所以现在只用qml实现部分固态界面,不能调整大小的,注意最严重的问题无一例外,都出在调整大小上。那些需要调整大小的界面还是老实的widget开发吧。即使你的开发机上一切正常,我相信你迟早会看到客户向你咆哮的脸,“这TM是什么界面啊,拉两下就散架了!” 最后说一句,QML真的非常好用,优秀的简洁,方便的界面逻辑实现,Open GL给力的动画效果,一切都那么美好,只是还需要一点点时间。
  • 打赏
  • 举报
回复
我也遇到过这样的问题,使用布局管理界面,然后鼠标拖拽时根据鼠标移动的距离改变窗口大小然后就闪屏,(更奇怪的是纵向拉伸很正常,横向就会闪)不知何解
wo9aishuai 2015-11-06
  • 打赏
  • 举报
回复
求助!………

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧