web-dev-qa-db-ja.com

Qtドラッグアンドドロップ:ファイルをアプリケーションのメインウィンドウにドラッグするためのサポートを追加します

多くのアプリケーションでは、ユーザーは1つまたは複数のファイルをアプリケーションのメインウィンドウにドラッグできます。

自分のQtアプリケーションでこの機能のサポートを追加するにはどうすればよいですか?

26
Cool_Coder

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;
    }
}
41
borisbn

まず、 Qtリファレンスドキュメント:ドラッグアンドドロップ の基本を確認してから、 QMainWindowsでのファイルのドラッグアンドドロップ の技術的な内容を確認してください。後者は完全な例を提供します。

Qtにはたくさんの ドラッグアンドドロップの例 もあります。 ドロップサイト に興味があるかもしれません。

6
karlphillip

このリンクでコード全体を取得しました: ファイルをアプリケーションにドラッグアンドドロップ 。このページから。Zipをダウンロードできます。

コードは私にとって完璧に機能しました。そのコードを機能させるために私がしなければならないことは、mainwindow.hに含めることだけでした。

#include <QMimeData>

それがすべてです、私はそれがあなたを助けることができることを願っています。

3
Angie Quijano