PDA

View Full Version : [qtcreator]pulsante che avvia un'applicazione


Prince_81
01-03-2009, 17:25
vorrei creare un pulsante che avvia un'applicazione con una funzione simile a system() visto che system non funziona, sbirciando nel manuale non sono riuscito a trovare niente forse perchè è in inglese sapreste consigliarmi?

cionci
02-03-2009, 08:11
system deve funzionare. Programmando con le QT non è che smette di funzionare il resto :D Sei sempre con il C++.

In ogni caso ci sono metodi molto QT-style per avviare applicazioni. Guarda la classe QProcess nella documentazione.

Prince_81
03-03-2009, 20:07
ho provato system su visual studio e funziona ma in qtcreator no ho dato anche un'occhiata a qprocess ma per adesso non sono riuscito a trovare nulla per avviare un'applicazione.

cionci
03-03-2009, 20:13
Ti dico che funziona system...dimmi cosa vuoi eseguire da system, magari è solo un problema di Path.

Non hai letto bene la documentazione di QProcess. Il metodo start serve proprio ad avviare un programma.

Prince_81
04-03-2009, 10:49
allora usando il metodo qprocess ecco il codice QProcess process;

process.start("C:\\Users\\utente\\Desktop\\Remove Associazione file\\Unassoc.exe");

start prevede anche un tipo openmode ma visto che non mi dava errori non l'ho messo.

cionci
04-03-2009, 12:32
Il problema è sicuramente lo spazio nel path.

Prova così:

process.start("\"C:\\Users\\utente\\Desktop\\Remove Associazione file\\Unassoc.exe\"");

Prince_81
04-03-2009, 15:56
continua a non funzionare non capisco perchè!!!!!!!!!!!!! :doh:

cionci
04-03-2009, 16:05
continua a non funzionare non capisco perchè!!!!!!!!!!!!! :doh:
Prova prima con qualcosa di facile, metti solo "dir > pippo.txt" e verifica che pippo.txt venga creato.

Prince_81
04-03-2009, 22:47
bhe non ha funzionato ma poi il file pippo.txt in quale directory verrebbe creato? comunque ho fatto una ricerca e non è stato creato non so che dire come mai a me non funziona? comunque qtcreator lo sto usando su vista.

Prince_81
09-03-2009, 13:15
il codice è questo
void MainWindow::on_pushButton_2_clicked()
{

QProcess process;

process.start("\"G:\\SOFTWARE\\Remove Associazione file\\Unassoc.exe\"");

}

non capisco perchè non funziona

cionci
09-03-2009, 13:35
A me così funziona:

QProcess process;
process.start("c:\\windows\\notepad.exe");
process.waitForFinished();

Prince_81
09-03-2009, 16:56
si finalmente qualcosa si apre mancava process.waitForFinished(); pultroppo però non si apre il programma che si trova nella partizione logica G quello nell'esempio di prima.

cionci
09-03-2009, 16:58
Devi metterti lì e provare, certo non posso farlo io, visto che non ho quell'eseguibile.

Prince_81
09-03-2009, 17:07
il fatto che quel programma quando lo apro normalmente con il mouse mi chieda il permesso per aprirlo in quanto l'autore è sconosciuto potrebbe essere la causa del fatto che non riesco ad aprirlo con qprocess? hai un programma che ha l'autore sconosciuto e quindi di chieda la conferma dell'apertura?

cionci
09-03-2009, 17:17
No, non ne ho. Prova a lanciarlo dal terminale e guarda se lo chiede ancora.

Prince_81
09-03-2009, 17:40
si anche da terminale me lo chiede

Prince_81
13-03-2009, 16:38
una volta avviato il programma ho notato che il pulsante rimane come posso dire cliccato fin quando il programma rimane aperto impedendomi così di cliccarne altri, come posso fare a sbloccare (se questo è il termine giusto) il pulsante una volta avviato il programma?

cionci
13-03-2009, 17:28
Crei un thread con QThread e avvii il programma da lì.

Prince_81
13-03-2009, 17:37
ok grazie ci proverò

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.