QT GUI开发问题,高手请进!!!
我做了一个小程序,其中有个功能是类似于qq的自动收缩到桌面上方的功能,鼠标移动到桌面上方时则弹出窗口。重写了enterevent和levelevent,写了两个定时器的函...
我做了一个小程序,其中有个功能是类似于qq的自动收缩到桌面上方的功能,鼠标移动到桌面上方时则弹出窗口。重写了enterevent和levelevent,写了两个定时器的函数,和两个槽(缩进,弹出),但是出问题了,问题1:用setWindowFlags(Qt::WindowStaysOnTopHint);的时候,窗体会莫明的隐藏再也打不开了,问题2:我做的小程序有个textedit控件,在窗体位置靠顶时(见代码,当y坐标小于-28时可以自动缩放)当鼠标全选里面的文字后,瞬间移除窗体然后,窗体就一直缩在里面了,一直闪闪的,不能出来。问题3:在mouseMoveEvent里面使用判断语句限定窗口不能超出桌面上边边界,但是靠近桌面上边边界时,窗体会一闪一闪的,求大神解释
缩放窗体,代码如下(初学者,使用的比较蠢的方法): 展开
缩放窗体,代码如下(初学者,使用的比较蠢的方法): 展开
展开全部
第一个问题
试试把
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 函数吧...
试试把
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 函数吧...
追问
追答
好吧,我真的是没怎么认真看代码(不好意思....)
如果你想有滑动的效果你要用Qt 里面的动画类,而不是每一毫秒移动一个像素..
QPauseAnimation 或 QVariantAnimation
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-14
展开全部
问题1:楼主是去掉边框了吧,加入setWindowFlags(Qt::WindowStaysOnTopHint)后,并不是窗体消失了,而是缩进去了。。。把-325和-28改一改就行,2:把QTimer申请为全局变量吧,不要每次触发鼠标事件就new一个。3:请帖代码
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询