Seite 1 von 1

probleme mit dem filedialog:

Verfasst: 9. April 2006 15:20
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?

Verfasst: 9. April 2006 21:07
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.