QFileDialog -> löscht QLineEdit-Inhalt??

Alles rund um die Programmierung mit Qt
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

QFileDialog -> löscht QLineEdit-Inhalt??

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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??
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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
Antworten