• 6233阅读
  • 3回复

用scrollArea控件嵌入widget的问题 [复制链接]

上一主题 下一主题
离线storm_k
 

只看楼主 正序阅读 楼主  发表于: 2010-05-21
我在UI上放置一个scrollArea控件,想用scrollArea->setWidget(....)的功能嵌入一个widget,目前用按钮是可以实现的,但是用到鼠标右键事件的时候就会异常退出,不知道各位有没有遇到这种情况? 请指教一二,谢谢!

代码如下:
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
    if(object==ui->scrollArea)
        if(event->type()==QEvent::MouseButtonPress)
        {
            QMouseEvent *pMouseEvent=static_cast<QMouseEvent *>(event);
            if(pMouseEvent->button()==Qt::RightButton)
            {Form *f=new Form;
                ui->scrollArea->setWidget(f);
                
                return true;
            }
    }
    return QWidget::eventFilter(object,event);
}

环境是Linux
离线storm_k

只看该作者 3楼 发表于: 2010-05-21
非常感谢您的回答,我曾经尝试用一个按钮来ui->scrollArea->setWidget(f);
是可以完成。

目前迷惑的就是为什么这个事件里不能进行操作?

Form *f=new Form;不算实例化吗?  Form是另外一个文件里的class。

确实是右键一点就完全退出了,显示程序异常结束,很郁闷啊。。。。
离线storm_k

只看该作者 2楼 发表于: 2010-05-21
不知道是不是不能修改当前产生事件的对象之类的?  本人才疏学浅,请高人指点下。
离线xtfllbl

只看该作者 1楼 发表于: 2010-05-21
抛出了什么异常?
你那个 f 实例化了么?

如果只是单纯想在右键的时候setWidget,不需要用eventFilter,mousePressEvent就能解决问题了。

我怀疑你是不是右键点一此就set一下所以出的错,没有做好结束工作。

就以上代码看不出什么大问题
上海欢迎您
快速回复
限100 字节
 
上一个 下一个