#include #include #include #include #include #include #include #include #include #include "DocumentWizard.h" // ============================================================ // Пример главного окна приложения // ============================================================ class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget* parent = nullptr) : QMainWindow(parent) { setWindowTitle("Генератор Word-документов"); resize(600, 400); auto* central = new QWidget(this); setCentralWidget(central); auto* layout = new QVBoxLayout(central); auto* info = new QLabel( "Шаблон документа задаётся набором строк.
" "Каждая строка: тип|подсказка|выбор1;выбор2
" "Типы: heading1, heading2, heading3, text, table, image", this); info->setWordWrap(true); info->setStyleSheet("background:#fffbe6; padding:10px; border-radius:4px;"); layout->addWidget(info); m_templateEdit = new QTextEdit(this); m_templateEdit->setPlaceholderText("Введите строки шаблона…"); m_templateEdit->setPlainText(defaultTemplate()); m_templateEdit->setFont(QFont("Courier New", 10)); layout->addWidget(m_templateEdit, 1); auto* startBtn = new QPushButton("▶ Запустить мастер создания документа", this); startBtn->setStyleSheet( "QPushButton { background:#2c5f8a; color:white; font-weight:bold;" " padding:10px; border-radius:6px; font-size:13px; }" "QPushButton:hover { background:#3a7ab5; }"); layout->addWidget(startBtn); connect(startBtn, &QPushButton::clicked, this, &MainWindow::launchWizard); } private slots: void launchWizard() { QStringList lines = m_templateEdit->toPlainText().split('\n'); DocumentWizard wizard(lines, this); wizard.exec(); } private: QTextEdit* m_templateEdit; static QString defaultTemplate() { // Это и есть «строки, скармливаемые в начале работы программы» return "# Строки шаблона — определяют структуру будущего документа\n" "# Формат: тип|подсказка пользователю|вариант1;вариант2;вариант3\n" "\n" "heading1|Введите название документа (Заголовок 1)|" "Технический отчёт;Пояснительная записка;Руководство пользователя\n" "\n" "heading2|Выберите название раздела «Введение»|" "1. Введение;1. Общие сведения;1. Назначение системы\n" "\n" "text|Напишите вводный абзац|" "Настоящий документ описывает…;В данной работе рассматривается…;" "Целью настоящего документа является…\n" "\n" "heading2|Раздел «Характеристики»|" "2. Технические характеристики;2. Параметры системы\n" "\n" "table|Заполните таблицу характеристик системы|\n" "\n" "heading2|Раздел со схемой|" "3. Структурная схема;3. Архитектура решения\n" "\n" "image|Вставьте изображение схемы или диаграммы|\n" "\n" "heading2|Заключительный раздел|" "4. Заключение;4. Выводы\n" "\n" "text|Напишите заключение|" "В результате работы были получены…;Таким образом, в ходе…;" "Проведённые исследования показали…\n"; } }; // ============================================================ // main // ============================================================ int main(int argc, char* argv[]) { QApplication app(argc, argv); app.setStyle("Fusion"); MainWindow w; w.show(); return app.exec(); } #include "main.moc"