多くのアプリケーションでは、ユーザーは1つまたは複数のファイルをアプリケーションのメインウィンドウにドラッグできます。
自分のQtアプリケーションでこの機能のサポートを追加するにはどうすればよいですか?
MainWindow
クラスでdragEnterEvent()
とdropEvent()
をオーバーロードし、コンストラクターでsetAcceptDrops()
を呼び出します。
MainWindow::MainWindow(QWidget *parent)
{
..........
setAcceptDrops(true);
}
void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
if (e->mimeData()->hasUrls()) {
e->acceptProposedAction();
}
}
void MainWindow::dropEvent(QDropEvent *e)
{
foreach (const QUrl &url, e->mimeData()->urls()) {
QString fileName = url.toLocalFile();
qDebug() << "Dropped file:" << fileName;
}
}
まず、 Qtリファレンスドキュメント:ドラッグアンドドロップ の基本を確認してから、 QMainWindowsでのファイルのドラッグアンドドロップ の技術的な内容を確認してください。後者は完全な例を提供します。
Qtにはたくさんの ドラッグアンドドロップの例 もあります。 ドロップサイト に興味があるかもしれません。
このリンクでコード全体を取得しました: ファイルをアプリケーションにドラッグアンドドロップ 。このページから。Zipをダウンロードできます。
コードは私にとって完璧に機能しました。そのコードを機能させるために私がしなければならないことは、mainwindow.hに含めることだけでした。
#include <QMimeData>
それがすべてです、私はそれがあなたを助けることができることを願っています。