QT中在QTreeWidget中实现右键菜单功能

在创建好自己的QTreeWidget控件之后,添加 customContextMenuRequested 槽函数
QT中在QTreeWidget中实现右键菜单功能_第1张图片
槽函数内容如下

void ftpWindow::on_fileInfo_tw_customContextMenuRequested(const QPoint &pos)
{
    QTreeWidgetItem * curItem = ui->fileInfo_tw->itemAt(pos);
    if(curItem == NULL)
    {
        popMenu = new QMenu(this);
        uploadFilePath = popMenu->addAction("设当前目录为下装配置文件目录");
        connect(uploadFilePath,SIGNAL(triggered()),this,SLOT(on_uploadFilePathAction()));
        popMenu->exec(QCursor::pos());
    }
    else
    {
        popMenu = new QMenu(this);
        deleteFile = popMenu->addAction("删除");
        downloadFile = popMenu->addAction("下载");

        connect(deleteFile,SIGNAL(triggered()),this,SLOT(on_deleteAction()));
        connect(downloadFile,SIGNAL(triggered()),this,SLOT(on_downloadAction()));

        popMenu->exec(QCursor::pos());
    }
}

头文件中包含了

QMenu * popMenu;
QAction * deleteFile;
QAction * downloadFile;
QAction * uploadFilePath;

pos是为了确定鼠标的位置,点击在空白处则为 NULL ,否则就是被选中的 item。
菜单弹出之后再点击菜单下的功能,则会触发 triggered() 信号,所以我们需要用connect接收这个信号然后调用自己的槽函数
没什么难点,就这样。

效果如图
QT中在QTreeWidget中实现右键菜单功能_第2张图片
QT中在QTreeWidget中实现右键菜单功能_第3张图片

你可能感兴趣的:(QT)