• 7032阅读
  • 9回复

自动伸缩窗口问题 [复制链接]

上一主题 下一主题
离线skyblade
 

只看楼主 倒序阅读 楼主  发表于: 2008-07-04
— 本帖被 XChinux 执行加亮操作(2008-07-05) —
想自己设计一个DOCKWidget,使他具有自动伸缩的功能,
内部包含几个EDIT和一个QComboBox
重载以下两个方法
void PoppingDockWidget::leaveEvent(QEvent* event)
{
    QRect tmp = geometry();

    if(isFloating() )
    {
        setGeometry((tmp.left()+tmp.width()-4),tmp.top(),tmp.width(),tmp.height());//使窗口移动到主窗口的最右边

        QWidget::leaveEvent(event);
   
    }

   
}

void PoppingDockWidget::enterEvent(QEvent* event)
{
    QRect tmp = geometry();
    if(isFloating())
    {
        setGeometry((tmp.left()-tmp.width()+4),tmp.top(),tmp.width(),tmp.height());//使窗口回到原来的地方
    }
    QWidget::enterEvent(event);
}
现在问题是当选择QComboBox中的内容是,窗口就自动隐藏了,不知大家有什么解决方法。
有没有人使用其他方式达到自动伸缩的功能。
离线yleesun

只看该作者 1楼 发表于: 2008-07-04
楼主可以实现像qq那样的靠边隐藏效果吗?
离线skyblade

只看该作者 2楼 发表于: 2008-07-04
我做的不是像QQ那样的靠边隐藏,这个的功能就是当鼠标移出时窗口移动到主窗口的最右边,但会留下一个4像素的边缘,和主窗口边缘重合,当鼠标移入到主窗口的右边缘时,窗口就恢复到正常状态
离线yleesun

只看该作者 3楼 发表于: 2008-07-04
这样的功能已经挺好了,可以告诉我怎么做的吗。我用的QT4.3.4我想隐藏的是mainwindow窗口。
楼主可以把代码发给我吗。非常感谢。
离线skyblade

只看该作者 4楼 发表于: 2008-07-04
我现在就是重载了上面的两个 虚函数,你要做的可能是在里面要判断鼠标在桌面上的坐标,以及窗口的上下左右对于桌面的相对位置
离线yleesun

只看该作者 5楼 发表于: 2008-07-04
有qq吗,这样交流方便些
离线yleesun

只看该作者 6楼 发表于: 2008-07-04
我的qq:yleesun@163.com
我对坐标就是不熟悉,感觉很难下手。你说的那个功能,就已经可以满足我需要。当鼠标离开时,窗口移动到屏幕的最右边。
离线skyblade

只看该作者 7楼 发表于: 2008-07-04
没法用qq ,公司不让
离线yleesun

只看该作者 8楼 发表于: 2008-07-04
那用google talk
我试了,就是没有办法确定该向右移动多少才可以达到效果
用你上面的只能移动一半进去
离线yleesun

只看该作者 9楼 发表于: 2008-07-04
加了那个
void PoppingDockWidget::enterEvent(QEvent* event)
{
    QRect tmp = geometry();
    if(isFloating())
    {
        setGeometry((tmp.left()-tmp.width()+4),tmp.top(),tmp.width(),tmp.height());//使窗口回到原来的地方
    }
    QWidget::enterEvent(event);
}

后,当鼠标在窗口时,窗口会一直闪。
可知道,什么原因?
快速回复
限100 字节
 
上一个 下一个