docx-generator/main.cpp
2026-04-29 07:15:22 +05:00

110 lines
4.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QVBoxLayout>
#include <QTextEdit>
#include <QLabel>
#include <QWidget>
#include <QStringList>
#include <QMessageBox>
#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(
"<b>Шаблон документа</b> задаётся набором строк.<br>"
"Каждая строка: <code>тип|подсказка|выбор1;выбор2</code><br>"
"Типы: 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"