구리의 창고

QT Programming - QTextEdit 에 Drag and Drop 으로 파일 넣기 본문

QT

QT Programming - QTextEdit 에 Drag and Drop 으로 파일 넣기

구리z 2011. 8. 31. 09:30
메신저나 기타 위젯들을 보면 파일을 끌어다놓고 실행하거나 파일전송을 한다.

QTextEdit 도 drag & drop 을 지원하긴 하는데 !! 파일은 드롭 불가표시가 뜨고만다.

이 부분을 해결하려면 Qt 에 있는 수 많은 예제들에서 찾기 힘든데~

canInsertFromMimeData를 상속받아서 원하는 필터를 추가해주면된다.

TextEdit::TextEdit(QWidget* parent) : QTextEdit(parent)
{
	setAcceptDrops(true);
}
bool TextEdit::canInsertFromMimeData(const QMimeData* source) const
{
	return source->hasUrls() || QTextEdit::canInsertFromMimeData(source);
}
void TextEdit::dragEnterEvent(QDragEnterEvent* event){
	event->acceptProposedAction();
}
void TextEdit::dragMoveEvent(QDragEnterEvent* event){	
	event->acceptProposedAction();
}
void TextEdit::dropEvent(QDropEvent* event){
	const QMimeData* mimeData = event->mimeData();	
	if (mimeData->hasUrls())
	{	
		QList<QUrl> paths = mimeData->urls();	
		foreach(QUrl path, paths)		
		{
			qDebug() << path.toLocalFile();	
		}	
	}
}
Comments