From 63786a9f65bc3a2d23c7371a1fc57c49df21b920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D1=83=D1=80=D0=B0=D1=82=20=D0=94=D0=B6=D0=B0=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BA=D0=BE=D0=B2?= Date: Sun, 17 May 2026 03:11:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 Readme.md diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..9afab68 --- /dev/null +++ b/Readme.md @@ -0,0 +1,208 @@ +### Калькулятор с графическим интерфейсом + +```cpp +#include +#include +#include +#include +#include +#include + +class Calculator : public QWidget { +public: + Calculator() { + auto *layout = new QGridLayout(this); + + display = new QLineEdit(); + display->setReadOnly(true); + display->setAlignment(Qt::AlignRight); + layout->addWidget(display, 0, 0, 1, 4); + + QString buttons[4][4] = { + {"7","8","9","/"}, + {"4","5","6","*"}, + {"1","2","3","-"}, + {"C","0","=","+"} + }; + + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + QString text = buttons[i][j]; + auto *btn = new QPushButton(text); + layout->addWidget(btn, i + 1, j); + + connect(btn, &QPushButton::clicked, this, [=]() { + handleInput(text); + }); + } + } + } + +private: + QLineEdit *display; + QString current; + + void handleInput(const QString &text) { + if (text == "C") { + current.clear(); + } + else if (text == "=") { + current = QString::number(evaluate(current)); + } + else { + current += text; + } + + display->setText(current); + } + + double evaluate(const QString &expr) { + // простой парсер: число операция число + QString op; + int pos = -1; + + for (int i = 0; i < expr.size(); i++) { + if (QString("+-*/").contains(expr[i])) { + op = expr[i]; + pos = i; + break; + } + } + + if (pos == -1) return expr.toDouble(); + + double a = expr.left(pos).toDouble(); + double b = expr.mid(pos + 1).toDouble(); + + if (op == "+") return a + b; + if (op == "-") return a - b; + if (op == "*") return a * b; + if (op == "/") return b != 0 ? a / b : 0; + + return 0; + } +}; + +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + Calculator w; + w.setWindowTitle("Calculator"); + w.resize(250, 300); + w.show(); + + return app.exec(); +} + +``` + +### Базовый ToDO с графическим интерфейсом + +```cpp +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class NotesApp : public QWidget { +public: + NotesApp() { + auto *layout = new QVBoxLayout(this); + + list = new QListWidget(); + input = new QLineEdit(); + + auto *btnAdd = new QPushButton("Add"); + auto *btnDel = new QPushButton("Delete"); + auto *btnSave = new QPushButton("Save"); + + auto *btnLayout = new QHBoxLayout(); + btnLayout->addWidget(btnAdd); + btnLayout->addWidget(btnDel); + btnLayout->addWidget(btnSave); + + layout->addWidget(list); + layout->addWidget(input); + layout->addLayout(btnLayout); + + connect(btnAdd, &QPushButton::clicked, this, &NotesApp::addNote); + connect(btnDel, &QPushButton::clicked, this, &NotesApp::deleteNote); + connect(btnSave, &QPushButton::clicked, this, &NotesApp::saveNotes); + + loadNotes(); + } + +private: + QListWidget *list; + QLineEdit *input; + + + QString filePath = "/home/lux/Документы/notes.txt"; + + void addNote() { + QString text = input->text().trimmed(); + if (!text.isEmpty()) { + list->addItem(text); + input->clear(); + } + } + + void deleteNote() { + auto *item = list->currentItem(); + if (item) delete item; + } + + void saveNotes() { + QFile file(filePath); + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + qDebug() << "Ошибка сохранения:" << filePath; + return; + } + + QTextStream out(&file); + + for (int i = 0; i < list->count(); i++) { + out << list->item(i)->text() << "\n"; + } + + qDebug() << "Сохранено в:" << filePath; + } + + void loadNotes() { + QFile file(filePath); + + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug() << "Файл не найден, создаётся новый"; + return; + } + + QTextStream in(&file); + + while (!in.atEnd()) { + QString line = in.readLine().trimmed(); + if (!line.isEmpty()) + list->addItem(line); + } + + qDebug() << "Загружено из:" << filePath; + } +}; + +int main(int argc, char *argv[]) { + QApplication app(argc, argv); + + NotesApp w; + w.setWindowTitle("Notes App"); + w.resize(400, 300); + w.show(); + + return app.exec(); +} +```