私は PyQt でアプリケーションに取り組んでいます。HTMLページがロードされるQWebViewでUIを作成しました。
この HTML ページには、ファイルが特定の DIV にドロップされたかどうかを検出する JavaScript コードが含まれています。
$(document).ready(function() {
jQuery.event.props.push('dataTransfer');
$('.input').bind('drop', function(e) {
var files = e.dataTransfer.files;
alert(files[0].name);
});
});
HTMLコードをChromeにロードすると、これはうまく機能します。
アプリケーションを実行し、QWebView でファイルを D&D すると、JavaScript コードが実行されません。
QWebView を拡張し、イベントを追加して、Python で D&D イベントをキャッチできるようにしました。
class BrowserWindow(QtWebKit.QWebView):
def __init__(self, parent):
super(BrowserWindow, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
urls = event.mimeData().urls()
print str(urls[0].toLocalFile())
else:
event.ignore()
QWebView で JavaScript を使用してそのようなイベントを直接キャッチするオプションはありますか?