Geração de QR Codes em C++: biblioteca QR-Code-generator

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca QR-Code-generator para C++: guia completo

\n\n

Os QR Codes se tornaram parte essencial do mundo digital moderno. Eles são usados em publicidade, logística, sistemas de pagamento e até em projetos educacionais. Se você está desenvolvendo uma aplicação em C++ e deseja adicionar funcionalidade de geração de QR Codes, a biblioteca QR-Code-generator é uma ferramenta simples, leve e eficiente. Neste artigo, vamos detalhar o que é essa biblioteca, como instalá-la e mostrar exemplos práticos de código.

\n\n

O que é QR-Code-generator?

\n

QR-Code-generator é uma biblioteca multiplataforma em C++ (também disponível em C, Python, Java) que permite criar QR Codes de várias versões e níveis de correção de erros. Principais vantagens:

\n
    \n
  • Não requer dependências externas (funciona "pronto para uso").
  • \n
  • Suporta todas as 40 versões de QR Code (de 21×21 a 177×177 módulos).
  • \n
  • Níveis de correção de erros: L (7%), M (15%), Q (25%), H (30%).
  • \n
  • Saída como string (char*) ou array binário.
  • \n
  • Suporte a Unicode (UTF-8) e modos numérico/alfabético.
  • \n
\n

A biblioteca é ideal para incorporação em aplicações servidoras, utilitários de linha de comando ou projetos educacionais em C++.

\n\n

Instalação e configuração

\n

A instalação é extremamente simples. Você pode baixar os códigos-fonte do repositório GitHub da Nayuki ou usar um gerenciador de pacotes (ex.: vcpkg). Veja o método manual:

\n
    \n
  1. Baixe os arquivos qrcodegen.hpp e qrcodegen.cpp.
  2. \n
  3. Coloque-os na pasta do seu projeto.
  4. \n
  5. Inclua o arquivo de cabeçalho no código: #include "qrcodegen.hpp".
  6. \n
  7. Compile o projeto com a flag -std=c++11 ou superior.
  8. \n
\n

Exemplo de compilação com g++:

\n
g++ -std=c++11 main.cpp qrcodegen.cpp -o qr_generator
\n\n

Principais funções da API

\n

A biblioteca oferece uma API minimalista, mas poderosa. Principais funções:

\n
    \n
  • qrcodegen::QrCode::encodeText(text, ecl) — codifica uma string de texto em QR Code com o nível de correção especificado.
  • \n
  • qrcodegen::QrCode::encodeBinary(data, ecl) — codifica dados binários.
  • \n
  • getSize() — retorna o tamanho do QR Code (número de módulos na largura).
  • \n
  • getModule(x, y) — verifica se o módulo (pixel) está definido nas coordenadas (x, y).
  • \n
\n\n

Exemplo 1: Geração de QR Code e exibição no console

\n

O exemplo mais simples é criar um QR Code para uma string de texto e exibi-lo como arte ASCII. Este código é útil para depuração ou demonstração no terminal.

\n
#include <iostream>\n#include <string>\n#include "qrcodegen.hpp"\n\nusing namespace std;\nusing namespace qrcodegen;\n\nint main() {\n    // Cria um QR Code para o texto com nível de correção H (30%)\n    const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);\n    \n    // Exibe o QR Code no console (caracteres █ e espaço)\n    for (int y = 0; y < qr.getSize(); y++) {\n        for (int x = 0; x < qr.getSize(); x++) {\n            cout << (qr.getModule(x, y) ? "██" : "  ");\n        }\n        cout << endl;\n    }\n    return 0;\n}
\n

Resultado: O console exibirá um QR Code que pode ser escaneado por qualquer smartphone. O nível H garante máxima resistência a danos.

\n\n

Exemplo 2: Criando um QR Code com dados binários

\n

Às vezes é necessário codificar não texto, mas bytes arbitrários (ex.: dados serializados). Use encodeBinary.

\n
#include <vector>\n#include "qrcodegen.hpp"\n\nusing namespace qrcodegen;\n\nint main() {\n    // Prepara dados binários (array de bytes)\n    std::vector<uint8                    

Recommendations