小编mag*_*nus的帖子

我想在QTWidgetItems上实现右键菜单

我正在开发一个uni项目,我们的目标是制作一个程序,扫描所选目录上的所有img/video/movie文件,将它们存储在数据库中,然后以有条理的方式(使用QTreeWidgetItem)进行翻译.程序允许你做一些事情,如读取文件,打开它们等等.现在,问题是我想右键单击其中一个文件并弹出一个菜单,其中包含许多选项,如Open Directory,删除文件......

我只是不知道如何制作正确的点击菜单,我是QT的新手,我试过这个:

connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(openMenu(QTreeWidgetItem *, int)));
Run Code Online (Sandbox Code Playgroud)

我尝试重新设计itemClicked方法,但似乎无法找到如何知道它是否是一个右键单击,我想我可能会以错误的方式尝试它.

我从中受到启发:

connect(treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(opennMusic(QTreeWidgetItem *, int)));
Run Code Online (Sandbox Code Playgroud)

它会在双击时执行音乐文件.

如果您需要更多代码部分,请告诉我:).

编辑完andy的最后一条评论以显示新代码:

#include "affichagemusique.h"  




    void AffichageMusique::lireMusique(QTreeWidgetItem *item, int column)
{

    if(item->text(6)!=NULL)
    {
    Phonon::MediaSource source(item->text(6));
    mediaObject->setCurrentSource(source);
    mediaObject->play();
    }
}    


    void AffichageMusique::vueArtiste()
{

    layout->removeWidget(treeWidget);
    treeWidget = new QTreeWidget();
    QAction* pOpenDir = new QAction(tr("Play music"),treeWidget );
    treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
    treeWidget->addAction(pOpenDir);

.......

}    
// later on on the code

    void AffichageMusique::pOpenDir()  
{

    QTreeWidget * treeWidget = new QTreeWidget();
    QTreeWidgetItem * QTreeWidgetI= treeWidget->currentItem();
    lireMusique(QTreeWidgetI, 6); …
Run Code Online (Sandbox Code Playgroud)

qt right-click

5
推荐指数
1
解决办法
9031
查看次数

标签 统计

qt ×1

right-click ×1