04 QStringList args = app.arguments();
05 QString path = QDir::currentPath();
06 if (args.count() > 1)
07 path = args[1];
08 cout << "Space used by images in " << qPrintable(path)
09 << " and its subdirectories is "
10 << (imageSpace(path) / 1024) << " KB" << endl;
11 return 0;
12 }
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ QDir::currentPath() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ QDir::homePath() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·Π°Π» ΠΏΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ imageSpace() Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ»Π°ΡΡ QDir ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ entryInfoList() (ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² QFileInfo), rename(), exists(), mkdir() ΠΈ rmdir(). ΠΠ»Π°ΡΡ QFile ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ remove() ΠΈ exists().
Π Π΅ΡΡΡΡΡ, Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π½ΠΎ Π² Qt ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²Π½Π΅Π΄ΡΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΡΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Qt. Π Π΄ΡΡΠ³ΠΈΡ Π³Π»Π°Π²Π°Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Π½Π΅Π΄ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΠΉΠ». Π§ΠΈΡΠ°ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ QFile, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π Π΅ΡΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π‘++ ΡΠ΅ΡΡΡΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Qt (rcc). ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ qmake, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ rcc, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ» .pro:
RESOURCES = myresourcefile.qrc
Π€Π°ΠΉΠ» myresourcefile.qrc β ΡΡΠΎ XMLβΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ², Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π Π°Π΄ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΠ΅ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ datafiles ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΉΠ» ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>datafiles/phone-codes.dat</file>
</qresource>
</RCC>
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΡ ΠΎΠΏΠΎΠ·Π½Π°ΡΡΡΡ ΠΏΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΡ ΠΏΡΡΠΈ :/. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΉΠ» ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΡΡ :/datafiles/phone-codes.dat ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΈΡΠ°Π½ ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ QFile.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°). ΠΠ²ΡΠΌΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ·-Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡ ΠΎΠ΄Π° ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π Π΅ΡΡΡΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Qt ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅ http://doc.trolltech.com/4.1/resources.html
Π‘Π²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ
ΠΠ»Π°ΡΡ QProcess ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. QProcess ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π»Ρ, ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡΠΈΠ΅ Π½Π°Ρ ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ.
ΠΡ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ convert ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ImageMagick, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ .
Π ΠΈΡ. 12.2. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Image Converter.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Image Converter (ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ) Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Qt Designer. Π€Π°ΠΉΠ» .ui Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ uic ΠΊΠ»Π°ΡΡΠ° Ui::ConvertDialog, ΠΈ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
01 #ifndef CONVERTDIALOG_H
02 #define CONVERTDIALOG_H
03 #include <QDialog>
04 #include <QProcess>
05 #include "ui_convertdialog.h"
06 class ConvertDialog : public QDialog,
07 public Ui::ConvertDialog
08 {
09 Q_OBJECT
10 public:
11 ConvertDialog(QWidget *parent = 0);
12 private slots:
13 void on_browseButton_clicked();
14 void on_convertButton_clicked();
15 void updateOutputTextEdit();
16 void processFinished(int exitCode, QProcess::ExitStatus exitStatus);
17 void processError(QProcess::ProcessError error);
18 private:
19 QProcess process;
20 QString targetFile;
21 };
22 #endif
ΠΡΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΎΠΌΡ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ°Π·ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠΎΡΠΌ Qt Designer. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ QtDesigner ΡΠ»ΠΎΡΡ on_browseButton_clicked() ΠΈ on_convertButton_clicked() Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ clicked() ΠΊΠ½ΠΎΠΏΠΎΠΊ Browse (ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ) ΠΈ Convert (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ).
01 ConvertDialog::ConvertDialog(QWidget *parent)
02 : QDialog(parent)
03 {
04 setupUi(this);
05 connect(&process, SIGNAL(readyReadStandardError()),
06 this, SLOT(updateOutputTextEdit()));
07 connect(&process, SIGNAL(finished(int, QProcess::ExitStatus)),
08 this, SLOT(processFinished(int, QProcess::ExitStatus)));
09 connect(&process, SIGNAL(error(QProcess::ProcessError)),
10 this, SLOT(processError(QProcess::ProcessError)));
11 }
ΠΡΠ·ΠΎΠ² setupUi() ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅Ρ Π²ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΎΡΠΌ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»βΡΠ»ΠΎΡ Π΄Π»Ρ ΡΠ»ΠΎΡΠΎΠ² on_objectName_signalName() ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Quit (Π²ΡΠΉΡΠΈ) Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ QDialog::accept(). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π²ΡΡΡΠ½ΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° QProcess Ρ ΡΡΠ΅ΠΌΡ Π·Π°ΠΊΡΡΡΡΠΌΠΈ ΡΠ»ΠΎΡΠ°ΠΌΠΈ. ΠΡΠ±ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠ° cerr ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ updateOutputTextEdit().
01 void ConvertDialog::on_browseButton_clicked()
02 {
03 QString initialName = sourceFileEdit->text();
04 if (initialName.isEmpty())
05 initialName = QDir::homePath();
06 QString fileName = QFileDialog::getOpenFileName(this,
07 tr("Choose File"), initialName);
08 fileName = QDir::convertSeparators(fileName);
09 if (!fileName.isEmpty()) {
10 sourceFileEdit->setText(fileName);
11 convertButton->setEnabled(true);
12 }
13 }
Π‘ΠΈΠ³Π½Π°Π» clicked() ΠΊΠ½ΠΎΠΏΠΊΠΈ Browse (ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ setupUi() ΡΠΎ ΡΠ»ΠΎΡΠΎΠΌ on_browseButton_clicked(). ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π½Π΅Π΅ Π²ΡΠ±ΠΈΡΠ°Π» ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ°ΠΉΠ», ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
01 void ConvertDialog::on_convertButton_clicked()
02 {
03 QString sourceFile = sourceFileEdit->text();
04 targetFile = QFileInfo(sourceFile).path()
05 + QDir::separator() + QFileInfo(sourceFile).baseName()
06 + "." + targetFormatComboBox->currentText().toLower();
07 convertButton->setEnabled(false);
08 outputTextEdit->clear();
09 QStringList args;
10 if (enhanceCheckBox->isChecked())
11 args << "-enhance";
12 if (monochromeCheckBox->isChecked())
13 args << "-monochrome";
14 args << sourceFile << targetFile;
15 process.start("convert", args);
16 }
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Convert (ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ), ΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΎΠ²ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΡΠ°ΠΉΠ»Π°. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ('/' ΠΈΠ»ΠΈ '\' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ QDir::separator()) Π²ΠΌΠ΅ΡΡΠΎ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Convert, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΌΠΎΠ³ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π½Π°ΠΌΠΈ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
ΠΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ QProcess::start() Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ (convert), ΠΈ Π²ΡΠ΅ΠΌΠΈ Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠ»Π°ΠΆΠΊΠΈ -enhance ΠΈ -monochrome, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°Π» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². Π’ΠΈΠΏ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° convert ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ².