QT

[Qt] Drag & Drop 예제 (드래그 앤 드롭)

Geuny 2023. 2. 17. 15:05

Qt에서 드래그&드롭 기능을 사용하기 위해서는 우선 AcceptDrops 옵션이 "true"로 설정되어 있어야 한다.

AcceptDrops 옵션이 켜져 있어야 dragEnterEvent, dropEvent 순으로 처리가 가능하다.

AcceptDrops 옵션 설정 방법

더보기

AcceptDrops 옵션 설정 방법은 2가지가 있다.

1. Qt Designer에서 AcceptDrops 옵션 체크하는 방법

  -. 드래그&드롭 기능을 처리하기 원하는 위젯의 acceptDrops 옵션을 체크

     -. 체크박스에 체크가 되어 있으면 AcceptDrops 옵션이 True, 체크해제 되어 있으면 False

Qt Creator(Designer)에서 Dialog의 acceptDrops 옵션

2. API 호출하여 처리하는 방법

  -. setAcceptDrops(bool) 함수 호출


 드래그 & 드롭 예제 코드 (일부만)

  -. 해당 예제에서는 setAcceptDrops() API 함수를 호출하여 다이얼로그에 드래그 & 드롭 기능을 Enable하도록 하였음.

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    setAcceptDrops(true);
}

void Dialog::dragEnterEvent(QDragEnterEvent *e)
{
    ui->label_state->setText("drag enter...");
    e->accept();
}

void Dialog::dropEvent(QDropEvent *e)
{
    ui->label_state->setText("dropped..!");

    if (!e->mimeData()->hasUrls())
        return;

    QList<QUrl> urls = e->mimeData()->urls();
    foreach (QUrl url, urls)
    {
        ui->plainTextEdit->appendPlainText(url.toLocalFile());
    }
}

 

 드래그 & 드롭 예제 코드 (전체 소스)

 

GitHub - Geuny-Dev/Qt5Example

Contribute to Geuny-Dev/Qt5Example development by creating an account on GitHub.

github.com


실행 화면