Включение внешнего кода
Следующие команды позволяют включить фрагменты кода из внешних файлов. Вы можете заставить QDoc включить все содержимое файла или выделить определённые части файла, пропуская другие. Типичное использование последнего варианта — выделение кусков файла по частям.
Примечание: Хотя все эти команды можно использовать для отображения кода C++, команды \snippet и \codeline предпочтительнее других. Эти команды позволяют подставлять эквивалентные фрагменты кода для других привязок языка Qt вместо фрагментов кода C++ в документации.
\quotefile
Команда \quotefile расширяется до всего содержимого файла, указанного в качестве аргумента.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после имени файла идёт перевод строки.
Содержимое файла отображается в отдельном абзаце с использованием шрифта с фиксированной шириной и стандартным отступом. Код отображается дословно.
/ *!
This is a simple "Hello world" example:
\quotefile examples/main.cpp
It contains only the bare minimum you need
to get a Qt application up and running.
* / QDoc отображает это как:
Это простой пример «Hello world»:
/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.resize(100, 30); hello.show(); return app.exec(); }Он содержит только минимум, необходимый для запуска приложения Qt.
См. также \quotefromfile и \code.
\quotefromfile
Команда \quotefromfile открывает файл, указанный в качестве аргумента, для цитирования.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после имени файла идёт перевод строки.
Команда предназначена для использования при цитировании частей файла с помощью команд пошагового описания: \printline, \printto, \printuntil, \skipline, \skipto, \skipuntil. Это позволяет вам цитировать определённые части файла.
/ *!
The whole application is contained within
the \c main() function:
\quotefromfile examples/main.cpp
\skipto main
\printuntil app(argc, argv)
First we create a QApplication object using
the \c argc and \c argv parameters.
\skipto QPushButton
\printuntil resize
Then we create a QPushButton, and give it a reasonable
size using the QWidget::resize() function.
...
* / QDoc отображает это как:
Все приложение содержится в функции
main():int main(int argc, char *argv[]) { QApplication app(argc, argv);Сначала мы создаём объект QApplication с использованием параметров
argcиargv.QPushButton hello("Hello world!"); hello.resize(100, 30);Затем мы создаём QPushButton и задаём ему разумный размер с помощью функции QWidget::resize().
...
QDoc запоминает, из какого файла он цитирует, и текущую позицию в этом файле (см. \printline для получения дополнительной информации). Нет необходимости «закрывать» файл.
См. также \quotefile, \code и \dots.
\printline
Команда \printline расширяется до строки от текущей позиции до следующей строки без пробелов в текущем исходном файле.
Чтобы обеспечить синхронизацию документации с исходным файлом, в качестве аргумента команды необходимо указать подстроку. Обратите внимание, что команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что вы следуете за подстрокой переходом на новую строку.
Строка из исходного файла отображается в отдельном абзаце с использованием шрифта с фиксированной шириной и стандартным отступом. Код отображается дословно.
/ *!
There has to be exactly one QApplication object
in every GUI application that uses Qt.
\quotefromfile examples/main.cpp
\printline QApplication
This line includes the QApplication class
definition. QApplication manages various
application-wide resources, such as the
default font and cursor.
\printline QPushButton
This line includes the QPushButton class
definition. The QPushButton widget provides a command
button.
\printline main
The main function...
* / QDoc отображает это как:
В каждом приложении GUI, использующем Qt, должен быть ровно один объект QApplication.
#include <QApplication>Эта строка содержит определение класса QApplication. QApplication управляет различными ресурсами приложения, такими как шрифт и указатель по умолчанию.
#include <QPushButton>Эта строка содержит определение класса QPushButton. Виджет QPushButton предоставляет командную кнопку.
int main(int argc, char *argv[])Основная функция…
QDoc читает файл последовательно. Для перемещения текущей позиции вперёд можно использовать команды \skip.... Для перемещения текущей позиции назад можно снова использовать команду \quotefromfile.
Если аргумент подстроки заключён в слэши, он интерпретируется как регулярное выражение.
/ *!
\quotefromfile examples/mainwindow.cpp
\skipto closeEvent
\printuntil /^\}/
Close events are sent to widgets that the users want to
close, usually by clicking \c File|Exit or by clicking
the \c X title bar button. By reimplementing the event
handler, we can intercept attempts to close the
application.
* / QDoc отображает это как:
void MainWindow::closeEvent(QCloseEvent *event) //! [1] //! [2] { if (maybeSave()) { event->accept(); } else { event->ignore(); } }События закрытия отправляются виджетам, которые пользователь хочет закрыть, обычно щелкнув
File|Exitили щелкнув по кнопке в строке заголовкаX. Переопределив обработчик событий, мы можем перехватить попытки закрыть приложение.
Регулярное выражение /^\}/ заставляет QDoc печатать до первой символа '}' в начале строки без отступа. /.../ заключает регулярное выражение, а '^' означает начало строки. Символ '}' необходимо экранировать, так как это специальный символ в регулярных выражениях.
QDoc выведет предупреждение, если указанная подстрока или регулярное выражение не могут быть найдены, то есть если исходный код был изменён.
См. также \printto и \printuntil.
\printto
Команда \printto расширяется до всех строк от текущей позиции до и исключая следующую строку, содержащую указанную подстроку.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после подстроки идёт перевод строки. Команда также следует тем же соглашениям по позиционированию и аргументу, что и команда \printline.
Строки из исходного файла отображаются в отдельном абзаце с использованием шрифта с фиксированной шириной и стандартным отступом. Код отображается дословно.
/ *!
The whole application is contained within the
\c main() function:
\quotefromfile examples/main.cpp
\printto hello
First we create a QApplication object using the \c argc and
\c argv parameters...
* / QDoc отображает это как:
Все приложение содержится в функции
main():int main(int argc, char *argv[]) { QApplication app(argc, argv);Сначала мы создаём объект QApplication с использованием параметров
argcиargv…
См. также \printline и \printuntil.
\printuntil
Команда \printuntil расширяется до всех строк от текущей позиции до и включая следующую строку, содержащую указанную подстроку.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после подстроки идёт перевод строки. Команда также следует тем же соглашениям по позиционированию и аргументу, что и команда \printline.
Если \printuntil используется без аргумента, она расширяется до всех строк от текущей позиции до конца цитируемого файла.
Строки из исходного файла отображаются в отдельном абзаце с использованием шрифта с фиксированной шириной и стандартным отступом. Код отображается дословно.
/ *!
The whole application is contained within the
\c main() function:
\quotefromfile examples/main.cpp
\skipto main
\printuntil hello
First we create a QApplication object using the
\c argc and \c argv parameters, then we create
a QPushButton.
* / QDoc отображает это как:
Все приложение содержится в функции
main():int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!");Сначала мы создаём объект QApplication с использованием параметров
argcиargv, затем создаём QPushButton.
См. также \printline и \printto.
\skipline
Команда \skipline игнорирует следующую строку без пробелов в текущем исходном файле.
QDoc последовательно считывает файл, и команда \skipline используется для перемещения текущей позиции (пропуская строку исходного файла). Смотрите примечание о позиционировании файла выше.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что вы следуете за подстрокой переходом на новую строку. Команда также следует тем же соглашениям по аргументу, что и команда \printline, и используется совместно с командой \quotefromfile.
/ *!
QPushButton is a GUI push button that the user
can press and release.
\quotefromfile examples/main.cpp
\skipline QApplication
\printline QPushButton
This line includes the QPushButton class
definition. For each class that is part of the
public Qt API, there exists a header file of
the same name that contains its definition.
* / QDoc отображает это как:
QPushButton — это кнопка GUI, которую пользователь может нажимать и отпускать.
#include <QPushButton>Эта строка содержит определение класса QPushButton. Для каждого класса, входящего в общедоступный API Qt, существует одноимённый заголовочный файл, содержащий его определение.
См. также \skipto, \skipuntil и \dots.
\skipto
Команда \skipto игнорирует все строки от текущей позиции до и исключая следующую строку, содержащую указанную подстроку.
QDoc последовательно считывает файл, и команда \skipto используется для перемещения текущей позиции (пропуская одну или несколько строк исходного файла). Смотрите примечание о позиционировании файла выше.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после подстроки идёт перевод строки.
Команда также следует тем же соглашениям по аргументу, что и команда \printline, и используется совместно с командой \quotefromfile.
/ *!
The whole application is contained within
the \c main() function:
\quotefromfile examples/main.cpp
\skipto main
\printuntil }
First we create a QApplication object. There
has to be exactly one such object in
every GUI application that uses Qt. Then
we create a QPushButton, resize it to a reasonable
size...
* / QDoc отображает это как:
Все приложение содержится в функции
main():int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.resize(100, 30); hello.show(); return app.exec(); }Сначала мы создаём объект QApplication. В каждом приложении GUI, использующем Qt, должен быть ровно один такой объект. Затем мы создаём QPushButton, изменяем его размер до разумного значения...
См. также \skipline, \skipuntil и \dots.
\skipuntil
Команда \skipuntil игнорирует все строки от текущей позиции до и включая следующую строку, содержащую указанную подстроку.
QDoc последовательно считывает файл, и команда \skipuntil используется для перемещения текущей позиции (пропуская одну или несколько строк исходного файла). Смотрите примечание о позиционировании файла выше.
Команда рассматривает остальную часть строки как часть своего аргумента, убедитесь, что после подстроки идёт перевод строки.
Команда также следует тем же соглашениям по аргументу, что и команда \printline, и используется совместно с командой \quotefromfile.
/ *!
The first thing we did in the \c main() function
was to create a QApplication object \c app.
\quotefromfile examples/main.cpp
\skipuntil show
\dots
\printuntil }
In the end we must remember to make \c main() pass the
control to Qt. QCoreApplication::exec() will return when
the application exits...
* / QDoc отображает это как:
Первым делом в функции
main()мы создали объект QApplicationapp.... return app.exec(); }В конце мы должны заставить
main()передать управление Qt. QCoreApplication::exec() вернётся, когда приложение завершит работу...
См. также \skipline, \skipto и \dots.
\dots
Команда \dots указывает, что части исходного файла были опущены при цитировании файла.
Команда используется совместно с командой \quotefromfile и должна быть указана на отдельной строке. Точки выводятся на новой строке с использованием шрифта с фиксированным размером.
/ *!
\quotefromfile examples/main.cpp
\skipto main
\printuntil {
\dots
\skipuntil exec
\printline }
* / QDoc отображает это как:
int main(int argc, char *argv[])
{
...
} По умолчанию отступ составляет 4 пробела, но его можно настроить, используя необязательный аргумент команды.
/ *!
\dots 0
\dots
\dots 8
\dots 12
\dots 16
* / QDoc отображает это как:
...
...
...
...
... См. также \skipline, \skipto и \skipuntil.
\snippet
Команда \snippet вставляет фрагмент кода дословно как форматированный текст, который может быть выделен по синтаксису.
Каждый фрагмент кода ссылается на файл, который его содержит, и на уникальный идентификатор этого файла. Файлы фрагментов кода обычно хранятся в каталоге snippets внутри каталога документации (например, $QTDIR/doc/src/snippets).
Например, следующая документация ссылается на фрагмент кода в файле, находящемся в подкаталоге каталога документации:
\snippet snippets/textdocument-resources/main.cpp Adding a resource
Текст после имени файла является уникальным идентификатором фрагмента. Он используется для разграничения цитируемого кода в соответствующем файле фрагмента, как показано в следующем примере, который соответствует вышеупомянутой \snippet команде:
...
QImage image(64, 64, QImage::Format_RGB32);
image.fill(qRgb(255, 160, 128));
//! [Adding a resource]
document->addResource(QTextDocument::ImageResource,
QUrl("mydata://image.png"), QVariant(image));
//! [Adding a resource]
... По умолчанию qdoc ищет //! как маркер фрагмента кода. Для файлов .pro, .py, .cmake, и CMakeLists.txt обнаруживается #!. Наконец, <!-- принимается в файлах .html, .qrc, .ui, .xml, .dita, и .xq.
\codeline
Команда \codeline вставляет пустую строку форматированного текста. Она используется для вставки пробелов между фрагментами кода без закрытия текущей области форматированного текста и открытия новой.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/07-0-qdoc-commands-includingexternalcode.html