110 lines
4.8 KiB
C++
110 lines
4.8 KiB
C++
|
|
#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"
|