2013-02-15 32 views
16

पर फ़ाइलों को खींचने के लिए समर्थन जोड़ें बहुत सारे एप्लिकेशन उपयोगकर्ताओं को फ़ाइल या फ़ाइलों को एप्लिकेशन की मुख्य विंडो में खींचने की अनुमति देते हैं।क्यूटी ड्रैग और ड्रॉप: एप्लिकेशन की मुख्य विंडो

मैं इस सुविधा के लिए अपने स्वयं के क्यूटी आवेदन में समर्थन कैसे जोड़ूं?

उत्तर

31

अधिभार dragEnterEvent() और dropEvent() अपने MainWindow कक्षा में, और कॉल 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; 
    } 
} 
+0

कोड लिखने के लिए सभी दर्द लेने के लिए धन्यवाद! –

+0

आपका स्वागत है। मैंने कोड नहीं लिखा, लेकिन मेरे स्रोत से कॉपी किया गया)) – borisbn

+1

बस एक नोट: मुझे 'मेनविंडो :: ड्रैगमोवएवेंट()' विधि को ओवरराइड करना था जिसमें मैं अभी स्वीकार करता हूंप्रॉपॉक्शन() ' घटना है। अन्यथा यह मेरे लिए काम नहीं करेगा। – Ancurio

6

पहले, जांच बुनियादी बातों के लिए Qt Reference Documentation: Drag and Drop, और फिर तकनीकी सामान के लिए Drag and Drop of files on QMainWindows पर एक नज़र डालें। उत्तरार्द्ध एक पूर्ण उदाहरण प्रदान करता है।

क्यूटी में Drag and Drop examples का समूह भी है, तो आपको Drop Site में रुचि हो सकती है।

+0

मदद के लिए धन्यवाद! निश्चित रूप से इसमें देखेंगे। –

3

मैंने इस लिंक में पूरा कोड प्राप्त किया: Drag and Drop files into your application। आप इस पृष्ठ से .zip डाउनलोड कर सकते हैं।

#include <QMimeData>

बस इतना ही, मुझे आशा है कि यह कर सकते हैं:

कोड मेरे लिए एकदम सही काम किया, केवल बात यह है कि मुझे लगता है कि कोड काम करने के लिए क्या करना चाहिए मेरी mainwindow.h में शामिल करने के लिए था आपकी मदद।