https://pastein.ru/t/nU6

  скопируйте уникальную ссылку для отправки

Загрузка данных


Программа для создания QR-кодов в Qt Creator (Windows)
Вот полный код рабочего приложения на C++/Qt, которое генерирует настоящие QR-коды и сохраняет их в файл PNG. Для этого мы будем использовать библиотеку QRencode, которую легко подключить в Qt.
Шаг 1: Подготовка проекта
1.	Установите Qt Creator
2.	Создайте новый проект "Qt Widgets Application"
3.	Добавьте в файл .pro строку для подключения библиотеки QRencode:
LIBS += -lqrencode
Шаг 2: Полный код приложения
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QImage>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_generateButton_clicked();
    void on_saveButton_clicked();

private:
    Ui::MainWindow *ui;
    QImage qrImage;
    void generateQRCode(const QString &text);
};
#endif // MAINWINDOW_H"


mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qrencode.h>
#include <QFileDialog>
#include <QMessageBox>
#include <QPainter>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("QR Code Generator");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::generateQRCode(const QString &text)
{
    if (text.isEmpty()) {
        QMessageBox::warning(this, "Warning", "Please enter text first!");
        return;
    }

    // Генерация QR-кода
    QRcode *qr = QRcode_encodeString(text.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1);
    if (!qr) {
        QMessageBox::critical(this, "Error", "Could not generate QR code!");
        return;
    }

    // Создание изображения
    qrImage = QImage(qr->width + 8, qr->width + 8, QImage::Format_RGB32);
    qrImage.fill(Qt::white);

    QPainter painter(&qrImage);
    painter.setPen(Qt::NoPen);
    painter.setBrush(Qt::black);

    for (int y = 0; y < qr->width; y++) {
        for (int x = 0; x < qr->width; x++) {
            if (qr->data[y * qr->width + x] & 1) {
                painter.drawRect(x + 4, y + 4, 1, 1);
            }
        }
    }

    QRcode_free(qr);

    // Масштабирование для лучшего отображения
    qrImage = qrImage.scaled(200, 200, Qt::KeepAspectRatio, Qt::FastTransformation);
    ui->qrLabel->setPixmap(QPixmap::fromImage(qrImage));
    ui->saveButton->setEnabled(true);
}

void MainWindow::on_generateButton_clicked()
{
    generateQRCode(ui->textEdit->toPlainText());
}

void MainWindow::on_saveButton_clicked()
{
    if (qrImage.isNull()) {
        QMessageBox::warning(this, "Warning", "No QR code to save!");
        return;
    }

    QString fileName = QFileDialog::getSaveFileName(this,
        "Save QR Code", "", "PNG Images (*.png)");

    if (!fileName.isEmpty()) {
        if (!fileName.endsWith(".png", Qt::CaseInsensitive))
            fileName += ".png";

        if (qrImage.save(fileName)) {
            QMessageBox::information(this, "Success", "QR code saved successfully!");
        } else {
            QMessageBox::critical(this, "Error", "Could not save QR code!");
        }
    }
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
Шаг 3: UI форма (mainwindow.ui)
Создайте форму с помощью Qt Designer:
1.	QLabel для отображения QR-кода
2.	QTextEdit для ввода текста
3.	QPushButton "Generate" (generateButton)
4.	QPushButton "Save" (saveButton)
Шаг 4: Установка библиотеки QRencode
1.	Скачайте библиотеку QRencode для Windows: https://fukuchi.org/works/qrencode/
2.	Поместите файлы qrencode.h в папку include вашего проекта
3.	Поместите qrencode.lib в папку lib
4.	Добавьте в .pro файл:

INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lqrencode
Как это работает
1.	Пользователь вводит текст в поле ввода
2.	При нажатии "Generate" вызывается функция generateQRCode()
3.	Библиотека QRencode создает QR-код
4.	Код преобразуется в QImage и отображается в интерфейсе
5.	Кнопка "Save" позволяет сохранить QR-код в PNG файл