PDA

View Full Version : [C++][QT] Utilità di QTextStream


Darker
26-01-2010, 10:30
Ciao ragazzi,

in questo esempio non riesco a capire l'utilità di QTextStream. Immagino sia qualcosa non legata all'interfaccia ma non sono riuscito a trovare riscontri. Qualcuno può illuminarmi?


int main (int argc, char* argv[]) {
QApplication app(argc, argv);
QTextStream cout(stdout, QIODevice::WriteOnly); // <---- QUESTO

// Declarations of variables
int answer = 0;

do {
// local variables to the loop:
int factArg = 0;
int fact(1);
factArg = QInputDialog::getInteger(0, "Factorial Calculator",
"Factorial of:", 1);
cout << "User entered: " << factArg << endl; // <--- USATO QUA
int i=2;
while (i <= factArg) {
fact = fact * i;
++i;
}
QString response = QString("The factorial of %1 is %2.\n%3")
.arg(factArg).arg(fact)
.arg("Do you want to compute another factorial?");
answer = QMessageBox::question(0, "Play again?", response,
QMessageBox::Yes | QMessageBox::No);
} while (answer == QMessageBox::Yes);
return EXIT_SUCCESS;
}


grazie :)

tomminno
26-01-2010, 12:06
Direi che è perfettamente identico al cout standard.

cionci
26-01-2010, 12:06
Apre lo stadnard output e ci stampa. Lo puoi usare come std::cout, ma in più interpreta anche i tipi di dati base delle Qt senza bisogno di conversioni ai tipi standard C++.

Darker
26-01-2010, 13:10
Uhm. Non capisco però qual'è l'utilità in questo caso. Io non vedo alcuna scrittura a schermo relativa a quel cout :muro:

cionci
26-01-2010, 14:55
Uhm. Non capisco però qual'è l'utilità in questo caso. Io non vedo alcuna scrittura a schermo relativa a quel cout :muro:
Perché non c'è nessun programma attaccato alla standard output del programma.
Prova a lanciare l'applicazione da shell ;)

Darker
26-01-2010, 15:00
Uhm, capito. Peccato solo che ho provato a lanciarla da cmd di win7, ma mi è partita comunque l'interfaccia grafica. Deduco quindi che l'avrei vista lanciandola da dos puro, giusto?

cionci
26-01-2010, 15:02
Uhm, capito. Peccato solo che ho provato a lanciarla da cmd di win7, ma mi è partita comunque l'interfaccia grafica. Deduco quindi che l'avrei vista lanciandola da dos puro, giusto?
L'interfaccia parte sempre e comunque in quel caso. Solo che c'è anche l'output testuale.

Darker
26-01-2010, 20:40
Chiarissimo, grazie :)

Dato che ci siamo, vado un filino offtopic. Che tu sappia c'è un modo per esportare solo la porzione di dll che mi interessa (o, magari, crearne una che contiene solo le librerie che utilizzo) ?

E' abbastanza stupido avere 10 MB di dll per un programma di 60kB :D

cionci
27-01-2010, 00:39
Puoi fare un linking statico, ma violi la LGPL. No, non puoi esportare solo la parte di DLL che ti interessa.
Pensa invece a quanti megabyte devi installare per il .Net Framework su un PC che non lo ha. O anche semplicemente il runtime per l'ultima versione delle MFC.