• 6745阅读
  • 6回复

有Debian或Fedora的好心人进!关于窗体移动的问题,不知算不算QT的bug [复制链接]

上一主题 下一主题
离线radon2awp
 

只看楼主 正序阅读 楼主  发表于: 2010-06-25
— 本帖被 XChinux 执行加亮操作(2010-10-22) —
我做了这么一个程序,弹出一个QDialog,然后让这个窗口自动向下移动,一直移动到屏幕范围之外,以致看不见。
使用的方法是move函数,每0.1秒把窗口向下移动10个像素。

现在的问题是,在Debian 4 / 5 和Fedora 上,窗口不断向下移动,当窗口的下沿与屏幕下沿平齐时,窗口就不再继续向下移动了!
也就是说,你无法在以上的操作系统上把一个窗口移动到某个方向,使屏幕只显示窗口的一部分,move函数实效了!当然,手动用鼠标拖动窗口的标题栏是正常的。

我试过一些方法,setGeometry,重新调用show等等,都无效
不知是否有高人愿意和我一起研究一下,能够分析出问题的根本原因,或者找出解决办法使窗口一直移动到屏幕外面的,都可以!

多谢!!

另外,不知各位达人平时都用什么方法来改变一个窗口的显示位置来移动窗口,也欢迎指点和探讨,谢谢
离线hqd_2008
只看该作者 6楼 发表于: 2010-11-03
好像移动的问题是比较复杂,我做了一个动画在Linux下面跑得好好的,在win下面有时就不跑了。
离线抠涕
只看该作者 5楼 发表于: 2010-09-26
回 4楼(radon2awp) 的帖子
挖下坟,

gnome默认窗口管理器是 metacity , 直接kill掉貌似会自动重启?(好久不用不记得了)
装 Compiz 会有一个管理器, 可以选择替换掉默认的。
或者用 Xephyr (。。这名字老是不记得, 就是一个虚拟X客户端吧) , 然后运行程序的时候直接指定 display 过去
离线radon2awp

只看该作者 4楼 发表于: 2010-08-03
感谢!我去试验一下.
但是请问 抠涕 如何关闭窗口管理器呢?
离线wd007

只看该作者 3楼 发表于: 2010-07-12
觉得楼上提出的思路可以一试。

毕竟Linux的窗口管理比较复杂。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线抠涕
只看该作者 2楼 发表于: 2010-07-09
这个是窗口管理器的问题。

你把窗口管理器关掉就可以移动了。或者换别的某些窗口管理器也行。。。

还有个方法 - 修改 X11NetWmWindowType:
setAttribute()  设置 Qt::WA_X11NetWmWindowTypeSplash  貌似可以移出外面去。
但是有可能会导致别的一些问题, 要自己多测试一下。
离线tootzoe
只看该作者 1楼 发表于: 2010-07-08
我也测试了一下,  在 Fedora12上真的无法移出桌面以外的区域,  我在 window 上就可以达到预期的效果,我的测试代码如下:

  1. #include <QtGui>  
  2. int main(int argc, char **argv)
  3. {
  4.     QApplication app(argc, argv);
  5.     QPushButton   *tootbtn  = new  QPushButton   ("GO" );
  6.   
  7.       QPropertyAnimation *anim = new QPropertyAnimation(tootbtn, "geometry" );
  8.           anim->setStartValue(QRect(-100,-800,600,620));
  9.          anim->setKeyValueAt(.8, QRect(2600,800,300,320));
  10.          anim->setEndValue(QRect( 800, 1000,600,620));
  11.           anim->setDuration(2000);
  12.           anim->setEasingCurve(QEasingCurve::InBounce);
  13. tootbtn->show();
  14.           anim->start();
  15.     return app.exec();
  16. }
快速回复
限100 字节
 
上一个 下一个