Seite 1 von 1

QFileDialog -> löscht QLineEdit-Inhalt??

Verfasst: 27. März 2010 12:15
von listeman
Hallo Leute,

hab ein ganz komisches Problem: Wenn ich in meinem Programm nen QFileDialog benutze (getOpenFileName und getExistingDirectory) verschwindet aus einem QLineEdit immer der Inhalt. Das passiert auch, wenn die Funktion nur aus der einen Linie besteht, in der der QFileDialog geöffnet wird.
Zudem passiert das immer nur mit einem und demselben QLineEdit.

Dies hier ist die mainwindow.cpp:

Code: Alles auswählen

#include "mainwindow.h"
#include "preferences.h"
#include "global_preferences.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {

	ui->setupUi(this);

	QCoreApplication::setApplicationName("RRipper");

	...

	connect(ui->Details_LocationChoose, SIGNAL(clicked()), this, SLOT(SelectLocation()));

}

void MainWindow::SelectLocation() {

	QString directoryNew = QFileDialog::getExistingDirectory(this, tr("Select location"),location);

}
Das QLineEdit hat den Namen "ui->Details_StreamNameEdit" (per designer erstellt)...
Ein Klick auf den Button, der den QFileDialog öffnet lässt den Inhalt davon sofort verschwinden.

Gibt es dafür einen Grund? Oder ist das vielleicht ein Bug? Ich habe im Internet nix gefunden...

Viele Grüße
listeman

Verfasst: 27. März 2010 13:03
von franzf
Hast du vllt. irgendwie im Designer rumenxperimentiert und das clicked() des pushbutton auf das clear() des lineedit gelegt, also direkt imDesigner? Automatisch fasst Qt nämlich Elemente nicht an.

Verfasst: 28. März 2010 01:31
von listeman
Das ist ja das seltsame, da ist nichts eingestellt...

Doch nicht nur dieses QLineEdit leert sich, auch in einem aus dem Programm geöffneten Einstellungen-Fenster ändert sich die Beschriftung der beiden vorhandenen Tabs auf die Standard-Einstellung "Tab 1" und "Tab 2". Da sich der Standard im Designer irgendwie nicht ändern lässt, setze ich das im nachhinein im Code per:

Code: Alles auswählen

	ui->Preferences_Tabs->setTabText(0,"General Preferences");
	ui->Preferences_Tabs->setTabText(1,"Default Streamripper Preferences");
Wenn ich das Fenster aus dem Programm aufrufe, dann stimmt die Beschriftung auch, nur wenn ich den QFileDialog öffne, dann springt es plötzlich zurück auf den Standard... und wenn ich obigen Code direkt vor der Zeile

Code: Alles auswählen

QFileDialog::getOpenFileName(this,"Select Default Saving Location",ui->Pref_DefaultLocation->text());
in der Funktion und direkt danach schreibe, dann ist es klar, dass diese Zeile daran schuld ist, denn nur solange der FileDialog geöffnet ist, ist die Beschriftung auf "Tab 1" und "Tab 2"...

Doch das sind die beiden einzigen Effekte... Alles andere bleibt unberührt...

Ach ja, das QLineEdit habe ich per SIGNAL-SLOT mit einer Funktion verbunden, die jede Änderung sofort in einer Datei speichert. Doch das gewählte SIGNAL ist "textEdited(QString)", und die Dokumentation sagt darüber, dass "this signal is not emitted when the text is changed programmatically"... doch es wird ausgelöst aus irgendeinem seltsamen Grund...


Ich bin momentan total ratlos, da das für mich einfach keinen Sinn ergibt... warum passiert das??

Verfasst: 28. März 2010 08:46
von franzf
Gut, dann brauchen wir Code - mehr Code ;)
Am besten packst du dein Programm (OHNE BINARIES UND OHNE QT-LIBS!!!) in ein .zip und hängst es hier deinem Post an. Dann kann man sich das genauer anschauen.
Kurze Info welches Betriebssystem/Compiler und Versionen (Compiler+Qt) wären nicht schlecht.

Grüßli

Verfasst: 28. März 2010 14:55
von listeman
Okay, das Problem hat sich jetzt gelöst: Ich habe die ui-Datei einfach nochmal komplett neu erstellt und jetzt plötzlich funktioniert es...
Also an den Signal/Slots im Designer kanns nicht gelegen haben, denn die mache ich nur im Code, nicht im Designer.

Naja, jetzt funktioniert es ja, was will ich mehr...

Trotzdem Danke!! :)

Viele Grüße
listeman