查看完整版本: [-- QTreeWidget 里不同地方响应右键事件(空白处,item) --]

QTCN开发网 -> Qt基础编程 -> QTreeWidget 里不同地方响应右键事件(空白处,item) [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

wanghouting 2016-01-22 14:54

QTreeWidget 里不同地方响应右键事件(空白处,item)

[attachment=14741]

如图,为了实现右击1、2、3 能弹出不同的菜单(整个都是一个treeWidget),查阅资料,实现如下:
自定义CustomTreeWidget 继成自 QTreeWidget ,重写contextMenuEvent();

void CustomTreeWidget::contextMenuEvent(QContextMenuEvent *event)
{
    QTreeWidgetItem *pItem = NULL;
    QPoint point = event->pos();//右键点击坐标
    pItem = this->itemAt(point);//获取点击的item,没有则为NULL
    if(NULL ==pItem ) //点到空白处 (3处)
    {
        ...
    }else                //点到了item
    {
        if(pItem->data(0,Qt::UserRole) == "Top")  //点到了topLevelItem (1处)
        {
            ...
        }
        else if(pItem->data(0,Qt::UserRole) == "Sub")  //点到了subItem (2处)
        {
            ...
        }
    }
event->accept();
}


刚开始学QT~~如有不足之处~~欢迎指正


nigoole 2016-01-22 21:55
你这个还叫初学,~~让我等情何以堪~~

蚂蚁power 2016-01-25 11:17
顶一下

XChinux 2016-01-25 20:56
判断位置就可以了。

stlcours 2016-01-26 00:34
界面真美,可以考虑开源吗?

foxgod 2021-01-25 17:12
XChinux:判断位置就可以了。 (2016-01-25 20:56) 

你好,我在customContextMenuRequested 这个信号出发的槽函数里面写了 ui->treeWidget->itemAt(itempoint)  ,可是这个返回值一直是空是怎么回事。


查看完整版本: [-- QTreeWidget 里不同地方响应右键事件(空白处,item) --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled