QT GUI开发问题,高手请进!!!

我做了一个小程序,其中有个功能是类似于qq的自动收缩到桌面上方的功能,鼠标移动到桌面上方时则弹出窗口。重写了enterevent和levelevent,写了两个定时器的函... 我做了一个小程序,其中有个功能是类似于qq的自动收缩到桌面上方的功能,鼠标移动到桌面上方时则弹出窗口。重写了enterevent和levelevent,写了两个定时器的函数,和两个槽(缩进,弹出),但是出问题了,问题1:用setWindowFlags(Qt::WindowStaysOnTopHint);的时候,窗体会莫明的隐藏再也打不开了,问题2:我做的小程序有个textedit控件,在窗体位置靠顶时(见代码,当y坐标小于-28时可以自动缩放)当鼠标全选里面的文字后,瞬间移除窗体然后,窗体就一直缩在里面了,一直闪闪的,不能出来。问题3:在mouseMoveEvent里面使用判断语句限定窗口不能超出桌面上边边界,但是靠近桌面上边边界时,窗体会一闪一闪的,求大神解释
缩放窗体,代码如下(初学者,使用的比较蠢的方法):
展开
 我来答
创作者XXGDQ4kMbU
2013-10-13 · TA获得超过1281个赞
知道小有建树答主
回答量:371
采纳率:66%
帮助的人:429万
展开全部
第一个问题
试试把
setWindowFlags(Qt::WindowStaysOnTopHint)
换成
setWindowFlags(this->flags() | Qt::WindowStaysOnTopHint);
而且最好在构造函数里面写...

第二个问题: 没发现你的 textEdit 的代码...
第三个问题挺严重...
moveoutTimer()
和moveinTimer() 一直在 new Timer 并且这些timer 都没有 singel 的标志就是说
你调用一次 moveouttimer 后 moveInTimer 就会每隔一毫秒调用一下 mainMoveOut 这个函数
造成的后果就是 闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪.....
解决办法就是把new Timer 放在构造函数里面..
把 timer 都加上 signal 的标志setSingleShot(ture)
然后 start(1) 变成 1000
我想你不会是想每一毫秒调用一次 mainMoveOut 函数吧...
追问

非常感谢!

第二个问题就是在窗体上有个textedit,在窗体在缩放状态下,全选文字后然后瞬间移动鼠标界面就会恰在桌面上边。。。前两个问题都是使用上面代码的后遗症后遗症。。。

第三个问题,我是想实现每一毫秒移动一个像素点,看起来就是滑动的效果了,直到窗体y坐标为-325则停止滑动,这个倒没有闪。可能你没看太清吧,这个是限定窗体不能超出桌面的代码,靠边后就会一闪一闪的

追答
好吧,我真的是没怎么认真看代码(不好意思....)
如果你想有滑动的效果你要用Qt 里面的动画类,而不是每一毫秒移动一个像素..
QPauseAnimation 或 QVariantAnimation
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-14
展开全部
问题1:楼主是去掉边框了吧,加入setWindowFlags(Qt::WindowStaysOnTopHint)后,并不是窗体消失了,而是缩进去了。。。把-325和-28改一改就行,2:把QTimer申请为全局变量吧,不要每次触发鼠标事件就new一个。3:请帖代码
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式