Je fais une application qui va pouvoir programmer ma carte. Je voudrais sélectionner le fichier via la boîte de dialogue de fichier et de téléchargement avec le fichier sélectionné par le bouton de téléchargement. J'ai deux classes: MyFileDialog et CommandProcess. J'ai connecté le signal cliqué sur le bouton de téléchargement au mappeur de signal et je l'ai mappé au slot CommandProcess :: startProcess, qui exécute le processus avec le chemin du fichier sélectionné mais le chemin est incorrect si je ne l'indique pas au démarrage du programme. Comment puis-je mettre à jour le paramètre de mappage après avoir choisi le fichier?QSignalMapper ne met pas à jour le paramètre après avoir choisi le fichier
Une partie du code main.cpp:
QObject *uploadButton = mainForm->findChild<QObject*>("uploadButton");
QSignalMapper mapper;
ConsoleProcess proc;
MyFileDialog mfd;
QObject::connect(fileButton, SIGNAL(clicked()), &mfd, SLOT(openMyFileDialog()));
QObject::connect(uploadButton, SIGNAL(clicked()), &mapper, SLOT(map()));
mapper.setMapping(uploadButton, mfd.getFilename());
QObject::connect(&mapper, SIGNAL(mapped(const QString &)),&proc, SLOT(startProcess(const QString &)));
classe MyFileDialog:
public:
MyFileDialog();
QString getFilename();
private:
QFileDialog fd;
public slots:
void openMyFileDialog();
QString MyFileDialog::getFilename() {
return fd.getOpenFileName();
}
classe ConsoleProcess:
private:
QProcess p;
public:
ConsoleProcess();
public slots:
void startProcess(const QString &);
void ConsoleProcess::startProcess(const QString & path) {
p.setWorkingDirectory("C:/avrdude");
p.start("cmd.exe /C start avrdude.exe -c breakout -P ft0 -p m2560 -U flash:w:\"" + path + "\":a");
}
Êtes-vous sûr que vous avez besoin de ce 'QSignalMapper'? Vous pouvez ouvrir fileDialog, chech si le fichier existe et appeler 'Proc :: startProcess()' avec l'argument de chemin de fichier –
Ou d'une autre manière - pour stocker le chemin du fichier chosed dans le membre de la classe 'MyFileDialog' –
Cela peut être utile, devrais-je stocker le chemin après le bouton de téléchargement cliqué signal? – sochinho