Qt에서 드래그&드롭 기능을 사용하기 위해서는 우선 AcceptDrops 옵션이 "true"로 설정되어 있어야 한다.
AcceptDrops 옵션이 켜져 있어야 dragEnterEvent, dropEvent 순으로 처리가 가능하다.
AcceptDrops 옵션 설정 방법
더보기
![](https://blog.kakaocdn.net/dn/c873O4/btrZJdSUPA2/vpX2QhMNuOL4zJ8dcNe2D1/img.png)
Qt Creator(Designer)에서 Dialog의 acceptDrops 옵션
AcceptDrops 옵션 설정 방법은 2가지가 있다.
1. Qt Designer에서 AcceptDrops 옵션 체크하는 방법
-. 드래그&드롭 기능을 처리하기 원하는 위젯의 acceptDrops 옵션을 체크
-. 체크박스에 체크가 되어 있으면 AcceptDrops 옵션이 True, 체크해제 되어 있으면 False
![](https://blog.kakaocdn.net/dn/c873O4/btrZJdSUPA2/vpX2QhMNuOL4zJ8dcNe2D1/img.png)
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
실행 화면
'QT' 카테고리의 다른 글
[ERROR] cannot find -GL 발생 시, 해결 방법 (0) | 2016.02.26 |
---|---|
Drive(Storage) free space link (0) | 2014.01.03 |
Convert from char*(char array) to QString (0) | 2013.11.28 |
Convert from QImage to QPixmap (0) | 2013.11.27 |
QTextEdit의 내용 읽어오기 (0) | 2013.11.13 |