私はユニプロジェクトに取り組んでおり、私たちの目標は、選択したディレクトリ上のすべてのimg / video / movieファイルをスキャンし、データベースに保存して、整理された方法で(QTreeWidgetItemを使用して)shozするプログラムを作成することです。プログラムを使用すると、ファイルを読み取ったり、開いたりするなどの操作を実行できます。さて、問題は、ファイルの1つを右クリックして、ディレクトリを開く、ファイルを削除するなどの多くのオプションを含むメニューをポップアップしたいということです...
右クリックメニューの作り方がわかりません。QTは初めてです。これを作ってみました。
connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(openMenu(QTreeWidgetItem *, int)));
itemClickedメソッドを再定義しようとしましたが、それが右クリックであるかどうかを知る方法が見つからないようで、間違った方法で試している可能性があります。
私はこれからインスピレーションを得ました:
connect(treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(opennMusic(QTreeWidgetItem *, int)));
ダブルクリックで音楽ファイルを実行します。
より多くのコード部分が必要な場合は、私に知らせてください:)。
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);
}
QTreeWidgetを削除しても*treeWidget= new QTreeWidget(); 行が機能しません。右クリックするとメニューが表示されますが、PLayをクリックしても何も起こりません。