• 10326阅读
  • 9回复

【QTreeView】鼠标右键点击QTreeView事件? [复制链接]

上一主题 下一主题
离线_gxg
 
只看楼主 倒序阅读 楼主  发表于: 2012-10-09
关键词: QT4
mousePressEvent( QMouseEvent *event) 麽? 调试没反应 就没有到这个函数中哦
离线XChinux

只看该作者 1楼 发表于: 2012-10-09
你代码怎么写的?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线_gxg
只看该作者 2楼 发表于: 2012-10-09
回 1楼(XChinux) 的帖子
才着手接触第二天,还有很多不懂~辛苦您了,这两天帮我解答疑问,下面绑定的SIGNAL和SLOT应该有问题,调试时才会没调用on_mousePressEvent函数,正确写法怎么写哦?

Object::connect(treeView,SIGNAL(mousePressEvent(QMouseEvent *event)))
                           ,this,SLOT(on_mousePressEvent(QMouseEvent *event))));


注:on_mousePressEvent函数如下

.h文件中  
public slots:
  void on_mousePressEvent( QMouseEvent *event);

.cpp文件中
void treeView::on_mousePressEvent( QMouseEvent *event)
{
     if(event->button() == Qt::RightButton)
     {
          localMenu->exec(QCursor::pos());
     }
}

注:localMenu写的右键点击弹出的菜单
离线_gxg
只看该作者 3楼 发表于: 2012-10-09
回 1楼(XChinux) 的帖子
买了本《Qt高级编程》~翻翻看看有没有讲这个的~

坐等总版主解答~
离线_gxg
只看该作者 4楼 发表于: 2012-10-09
离线ppdayz

只看该作者 5楼 发表于: 2012-10-10
QTreeView以及其父类们都没有这个信号,所以用信号槽是不行的
你要操作鼠标事件,
就重写QTreeView父类的QWidget的


virtual void mouseDoubleClickEvent ( QMouseEvent * event )

virtual void mouseMoveEvent ( QMouseEvent * event )

virtual void mousePressEvent ( QMouseEvent * event )

virtual void mouseReleaseEvent ( QMouseEvent * event )


具体的书上应该都有


离线_gxg
只看该作者 6楼 发表于: 2012-10-10
回 5楼(ppdayz) 的帖子
.h文件中
protected:
    void mousePressEvent(QMouseEvent *event);
.cpp文件中

void treeView::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::RightButton)
    {
        localMenu->exec(QCursor::pos());
    }
}

重写了~但是点击还是没反应~还是不太懂~
离线_gxg
只看该作者 7楼 发表于: 2012-10-10
搞明白了,是我理解不到位~个人问题~ 谢谢大家了!
离线ppdayz

只看该作者 8楼 发表于: 2012-10-10
回 7楼(_gxg) 的帖子
你要的是右击弹出菜单吗?如果要实现这个功能,就要用到
Signals
void customContextMenuRequested ( const QPoint & pos )
例子很多的
离线_gxg
只看该作者 9楼 发表于: 2012-10-10
回 8楼(ppdayz) 的帖子
嗯嗯 是的

谢谢提示 我去查下这个去
快速回复
限100 字节
 
上一个 下一个