Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ Π½Π°Ρ ΠΎΠ±Π·ΠΎΡ MainWindow, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Editor. ΠΠ»Π°ΡΡ Editor ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π΅ ΠΎΠΊΠ½ΠΎ. ΠΠ½ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ QTextEdit, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° MDI.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°:
01 class Editor : public QTextEdit
02 {
03 Q_OBJECT
04 public:
05 Editor(QWidget *parent = 0);
06 bool openFile(const QString &fileName);
07 bool save();
08 bool saveAs();
09 void newFile();
10 bool open();
11 protected:
12 QSize sizeHint() const;
13 QAction *windowMenuAction() const { return action; }
14 void closeEvent(QCloseEvent *event);
15 private slots:
16 void documentWasModified();
17 private:
18 bool okToContinue();
19 bool saveFile(const QString &fileName);
20 void setCurrentFile(const QString &fileName);
21 bool readFile(const QString &fileName);
22 bool writeFile(const QString &fileName);
23 QString strippedName(const QString &fullFileName);
24 QString curFile;
25 bool isUntitled;
26 QString fileFilters;
27 QAction *action;
28 }
ΠΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ MainWindow ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠ΅ΡΡΡΠ΅ Π·Π°ΠΊΡΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ Editor: okToContinue(), saveFile(), setCurrentFile() ΠΈ strippedName().
01 Editor::Editor(QWidget *parent)
02 : QTextEdit(parent)
03 {
04 action = new QAction(this);
05 action->setCheckable(true);
06 connect(action, SIGNAL(triggered()), this, SLOT(show()));
07 connect(action, SIGNAL(triggered()), this, SLOT(setFocus()));
08 isUntitled = true;
09 fileFilters = tr("Text files (*.txt)\nAll files (*)");
10 connect(document(), SIGNAL(contentsChanged()),
11 this, SLOT(documentWasModified()));
12 setWindowIcon(QPixmap(":/images/document.png"));
13 setAttribute(Qt::WA_DeleteOnClose);
14 }
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ QAction, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π² ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Window, ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΎ ΡΠ»ΠΎΡΠ°ΠΌΠΈ show() ΠΈ setFocus().
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΊΠΎΠ½ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π»ΠΈΡΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, document1.txt). ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ isUntitled, ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ.
ΠΡ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠ³Π½Π°Π» ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° contentsChanged() c Π·Π°ΠΊΡΡΡΡΠΌ ΡΠ»ΠΎΡΠΎΠΌ documentWasModified(). ΠΡΠΎΡ ΡΠ»ΠΎΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ setWindowModified(true).
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡ Qt::WA_DeleteOnClose Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠΊΠ½Π° Editor.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ newFile(), Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ open().
01 void Editor::newFile()
02 {
03 static int documentNumber = 1;
04 curFile = tr("document%1.txt").arg(documentNumber);
05 setWindowTitle(curFile + "[*]");
06 action->setText(curFile);
07 isUntitled = true;
08 ++documentNumber;
09 }
Π€ΡΠ½ΠΊΡΠΈΡ newFile() Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΠΌΡ ΡΠΈΠΏΠ° document1.txt. ΠΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΡΡΠ½ΠΊΡΠΈΡ newFile(), a Π½Π΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»Π° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ open() Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²ΠΎ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Editor. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ documentNumber ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ, ΠΎΠ½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ Editor.
ΠΠ°ΡΠΊΠ΅Ρ Β«[*]Β» Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΎΠΊΠ½Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ΄Π°Π²Π°ΡΡ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΡ ΠΏΡΠΈ Π½Π΅ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ Mac OS X. ΠΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΌΠ°ΡΠΊΠ΅Ρ Π² Π³Π»Π°Π²Π΅ 3.
01 bool Editor::open()
02 {
03 QString fileName = QFileDialog::getOpenFileName(
04 this, tr("Open"), fileFilters);
05 if(fileName.isEmpty())
06 return false;
07 return openFile(fileName);
08 }
Π€ΡΠ½ΠΊΡΠΈΡ open() ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ ΡΡΡΠ΅cΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ openFile().
01 bool Editor::save()
02 {
03 if (isUntitled) {
04 return saveAs();
05 } else {
06 return saveFile(curFile);
07 }
Π€ΡΠ½ΠΊΡΠΈΡ save() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ isUntitled Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ saveFile() ΠΈΠ»ΠΈ saveAs().
01 void Editor::closeEvent(QCloseEvent *event)
02 {
03 if (okToContinue()) {
04 event->accept();
05 } else {
06 event->ignore();
07 }
08 }
Π€ΡΠ½ΠΊΡΠΈΡ closeEvent() ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π΅ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ okToContinue(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«Do you want to save your changes?Β» (Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ?). ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ okToContinue() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ Π·Π°ΠΊΡΡΡΠΈΡ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Β«ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌΒ» Π΅Π³ΠΎ ΠΈ ΠΎΠΊΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ.
01 void Editor::setCurrentFile(const QString &fileName)
02 {
03 curFile = fileName;
04 isUntitled = false;
05 action->setText(strippedName(curFile));
06 document()->setModified(false);
07 setWindowTitle(strippedName(curFile) + "[*]");
08 setWindowModified(false);
09 }
Π€ΡΠ½ΠΊΡΠΈΡ setCurrentFile() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· openFile() ΠΈ saveFile() Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ curFile ΠΈ isUntitled, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΈ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π°ΠΆΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π½Π° false. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° QTextDocument Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» contentsChanged() ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ»Π°ΠΆΠΎΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true.
01 QSize Editor::sizeHint() const
02 {
03 return QSize(72 * fontMetrics().width('x'),
04 25 * fontMetrics().lineSpacing());
05 }
Π€ΡΠ½ΠΊΡΠΈΡ sizeHint() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΡΠΈΠ½Ρ Π±ΡΠΊΠ²Ρ Β«xΒ» ΠΈ Π²ΡΡΠΎΡΡ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°. QWorkspace ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π°.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΉΠ» main.cpp MDIβΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Editor:
01 #include <QApplication>
02 #include "mainwindow.h"
03 int main(int argc, char *argv[])
04 {
05 QApplication app(argc, argv);
06 QStringList args = app.arguments();
07 MainWindow mainWin;
08 if (args.count() > 1) {
09 for (int i = 1; i < args.count(); ++i)
10 mainWin.openFile(args[i]);
11 } else {
12 mainWin.newFile();
13 }
14 mainWin.show();
15 return app.exec();
16 }
ΠΡΠ»ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π΄Π°Π΅Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ°ΠΉΠ»Ρ, ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΡΡΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ. Π’Π°ΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π»Ρ Qt ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠ°ΠΊ βstyle ΠΈ βfont (ΡΡΠΈΠ»Ρ ΠΈ ΡΡΠΈΡΡ), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ QApplication. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
mdieditor -style motif readme.txt
QApplication::arguments() Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ QStringList Ρ Π΄Π²ΡΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (Β«mdieditorΒ» ΠΈ Β«readme.txtΒ»), Π° ΠDIβΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Editor Π·Π°ΠΏΡΡΡΠΈΡΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ readme.txt.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ MDI ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ MacOS Π₯ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠΊΠΎΠ½ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π°Π±ΠΎΡΠ° ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈΒ» Π³Π»Π°Π²Ρ Π.
ΠΠ»Π°Π²Π° 7. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
Π‘ΠΎΠ±ΡΡΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ»ΠΈ Qt Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΈΠ»ΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΌΡΡΠΊΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΠΊΠΈ; ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΠ½ΠΎ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡΡ ΠΎΠΊΠ½Ρ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ±ΡΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² Qt Π½Π°ΠΌ ΡΠ΅Π΄ΠΊΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Qt ΡΠ°ΠΌΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π»ΡΠ±ΠΎΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅. Π‘ΠΎΠ±ΡΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π°ΠΌΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΎΠΎΡΡΠ²Π΅Π½Π½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Qt.