Hallo zusammen
Ich möchte einen kleinen FTP-Client erstellen, wobei die Dateien per Drag and Drop hoch- respektive runtergeladen werden sollten. Nun habe ich aber bei der Implementierung einige Probleme.
Ich habe ein eigenes Widget, welches aus zwei von QListWidget abgeleiteten Klassen besteht (je eines für die Ordner und eines für die Dateien), erstellt.
In den Listen-Klassen habe ich unter protected die verschiedenen Events deklariert und die Funktionen analog dem Qt-Beispiel gefüllt.
Nun werden aber die Klicks nicht mehr richtig ausgeführt. Per klicken kann kein anderes Item ausgewählt werden, die Navigation mit den Pfeilen, das Scrollen sowie das fokusieren klappt einwandfrei.
In der Doku habe ich gelesen, dass unter Umständen der ReleaseEvent nicht richtig ausgelöst wird. Könnte es daran liegen, auch wenn ich in der Funktion kein Widget erstelle? Wird dadurch auch der Klick beeinträchtigt? Und wie kann man das beheben? Das steht nämlich in der Doku nicht...
Liebe Grüsse
Don Tinelli
PS Per Debug habe ich herausgefunden, dass der Press- und der Release-Event funktionieren...
Drag&Drop, MousePressEvent
-
dontinelli
- Beiträge: 146
- Registriert: 22. September 2006 20:53
Nein. Um bei dem Beispiel zu bleiben:dontinelli hat geschrieben:danke! und wie mache ich das? mit event->accept()?
Code: Alles auswählen
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton
&& iconLabel->geometry().contains(event->pos())) {
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
mimeData->setText(commentEdit->toPlainText());
drag->setMimeData(mimeData);
drag->setPixmap(iconPixmap);
Qt::DropAction dropAction = drag->start();
...
}
}Re: Drag&Drop, MousePressEvent
Das raufladen geht prima auch dir rekursive....dontinelli hat geschrieben:Hallo zusammen
Ich möchte einen kleinen FTP-Client erstellen, wobei die Dateien per Drag and Drop hoch- respektive runtergeladen der Doku habe ich gelesen, dass unter Umständen der ReleaseEvent nicht richtig ausgelöst wird. Könnte es daran liegen, auch wenn ich in der Funktion kei
PS Per Debug habe ich herausgefunden, dass der Press- und der Release-Event funktionieren...
das runter draggen auf direkt desktop oder so ist nicht einfach ....
was geht ein lokales QDirmodel und das tree remote ( beide beinander) dann kann man runter draggen...
aus https://qt-webdav.svn.sourceforge.net/s ... v_main.cpp
ist zwar nicht ftp aber webdav ist fast identisch ausser den port!
Beim Window Drag hinein in einen tree muss man ein timer machen dass etwa 200 millisekunden wartet bis der herr richtig in der tmp schreibt!.
probiere http://sourceforge.net/project/showfile ... _id=222560
zu builden ... bis heute kann man dass auf alle 3 haupt os compilieren....
bei http://www.mydocsonline.com/ kann man dann free testen... oder du hast selber ein apache2....
Code: Alles auswählen
void Dav_Main::dragEnterEvent(QDragEnterEvent *event)
{
event->acceptProposedAction();
}
void Dav_Main::dropEvent(QDropEvent *event)
{
if (!netopen) {
/* andere zyklus offen upload oder download... */
return;
}
OnCodadir.clear();
OnCodafile.clear();
if(event && event->mimeData()) {
const QMimeData *data = event->mimeData();
QStringList urlmixed;
urlmixed.clear();
QStringList dirmixed;
dirmixed.clear();
QList<QUrl> urlelist;
if (data->hasUrls()) {
urlelist = data->urls();
for ( int i = 0; i < urlelist.size(); ++i ) {
QUrl gettyurl(urlelist.at(i));
if (gettyurl.isValid()) {
QString shema = gettyurl.scheme();
////////////qDebug() << "### shema " << shema;
if (shema == "file") {
QString localfileupsgo = gettyurl.toLocalFile();
if (is_file(localfileupsgo)) {
urlmixed.append(localfileupsgo);
qDebug() << "### file " << localfileupsgo;
}
QDir diro(localfileupsgo);
if (diro.exists()) {
dirmixed.append(localfileupsgo);
qDebug() << "### dirs " << localfileupsgo;
}
}
}
}
SendUpPutList(urlmixed,dirmixed); /* upload liste file & dir zuerst die dir um die ordner bereit zu haben... */
return;
}
}
}
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
-
dontinelli
- Beiträge: 146
- Registriert: 22. September 2006 20:53