• 4668阅读
  • 1回复

让窗口始终停靠在屏幕底部的方法 [复制链接]

上一主题 下一主题
离线napier
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-26
首先,我不知道 Qt 有没有直接提供这个效果的实现。

其次,如果自己编写这个效果的话,可以在初始化时先设定好窗口的初始位置,同时用一个 mouse event 来实现拖动窗口时 y 坐标保持不变的效果,这样一来,拖动窗口时就只能让窗口横向移动,始终停靠在屏幕底部。

但是,窗口位置(相对于屏幕)是以左上角来计算的,这样一来,就需要用屏幕的纵向分辨率和窗口的大小相减,来得到 y 坐标的设定值。如果改变了屏幕分辨率或者窗口的大小,都需要有一个函数响应这些变化,重新计算窗口的位置。

有没有比较好的办法?谢谢。

--------------------------------------------------------------

暂时就用上面的思路了。窗口自身大小改变比较好解决,因为有 resizeEvent。剩下的问题是屏幕分辨率改变的情况如何交给相关函数来处理,不知道发的是什么信号。在帮助里面查了一阵却没什么发现,后来 google 之,终于找到资料。

原来,Qt 文档里面描述分辨率改变都不用 resolution 这个词,而是用 resize··· 大汗··· 怪不得搜索不到。停靠影响到窗口位置的情况有两种:一种是屏幕分辨率改变,发出 resized 信号;另一种是工作区改变,用 workAreaResized。写出重新定位窗口位置的槽,和相关的信号连接起来就可以了。

至于更好的实现方法,我现在还想不到。
[ 此帖被napier在2009-07-30 17:41重新编辑 ]
离线duduqq

只看该作者 1楼 发表于: 2009-07-27
可以重载event(QEvent *event),然后查查帮助文档哪些事件与改变屏幕分辨率与窗口大小时有关的,
其实改变窗口的大小可以重载resizeEvent()来处理。
试试吧,我也没验证过
快速回复
限100 字节
 
上一个 下一个