probleme mit dem filedialog:

Alles rund um die Programmierung mit Qt
Antworten
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

probleme mit dem filedialog:

Beitrag von slash-ex »

das ist mein slot für den menueintrag:

Code: Alles auswählen

void MyBoardWDG::s_list()
{
	QString f_name;
	if (s_filedial->exec() == QDialog::Accepted)
		f_name = s_filedial->getSaveFileName();

	QDir dir = s_filedial->directory ();
	QString str_dir = dir.path();
	std::cout<<"menu: "<<str_dir.toStdString()+f_name.toStdString()<<std::endl;
	save_data(str_dir, f_name, armee_list, 28, 4);
}
das ist mein konstr.

Code: Alles auswählen

	filebar = new QMenuBar(this);
        file = new QMenu(tr("&Datei"), filebar);
        filebar->addMenu(file);

	s_filedial = new QFileDialog(this);
	s_filedial->setAcceptMode(QFileDialog::AcceptSave);
	s_filedial->setFilter( "Text (*.wh40k)" );

        file->addAction(tr("&Speichern"), this, SLOT(s_list() ) );
wenn ich dann in meinen programm im speichermenu auf speichern drücke kommt zwar ein speicherdialog. nachdem ich in diesem aber eine datei/ordner festgelegt habe öffnet sich jedch ein" save as" dialog in dem ich alles nochmal machen muss und in dem dann auch meine save_data()-fkt. ausgeführt wird. warum?
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Beitrag von Alci »

Hi,

Das Problem ist hier:
if (s_filedial->exec() == QDialog::Accepted)
mit exec() öffnest du dein FileDialog

f_name = s_filedial->getSaveFileName();
aber auch mit getSaveFileName() (ist eine statische Methode) öffnest du das FileDialog. Daher öffnet sich das FileDialog auch zum zweiten mal.

Also entweder das eine, oder das andere. Bei dir würde ich eher wohl das zweite empfehlen. Hat halt den Vorteil, dass du keine Instanz von QFileDialog erstellen musst.

MfG, Alci.
Antworten