Gerador de QR Code em C++ com libqrencode e CQRcode

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

Gerador de QR Code em C++: guia completo



Os QR Codes se tornaram parte essencial da web moderna e dos aplicativos móveis. Eles são usados para acesso rápido a links, transmissão de dados de contato, pagamentos e autenticação. Se você desenvolve em C++ e precisa de um gerador de QR Code embutido — sem serviços externos ou APIs — este artigo é para você. Vamos analisar duas bibliotecas principais: libqrencode (de baixo nível, flexível) e CQRcode (de alto nível, com saída PNG).



Por que gerar QR Codes em C++?

Principais cenários de uso:

  • Geração offline em aplicativos desktop (controle de estoque, ingressos).
  • Integração em soluções de servidor em C++ (alta performance).
  • Trabalho com recursos limitados (sistemas embarcados, microcontroladores).
  • Controle total sobre o processo de codificação e correção de erros.


Biblioteca libqrencode

libqrencode é a biblioteca C/C++ mais popular para criar QR Codes. Ela implementa o padrão ISO/IEC 18004, suporta todas as versões (1–40) e níveis de correção de erros (L, M, Q, H). A biblioteca é compacta, não requer dependências e funciona em Linux, macOS e Windows (via MinGW ou MSVC).



Instalação

# Linux (Debian/Ubuntu)sudo apt install libqrencode-dev

# macOS (Homebrew)brew install libqrencode

# Windows (vcpkg)vcpkg install libqrencode


Exemplo de geração de QR Code em array de bytes (imagem preto e branco)

#include <qrencode.h>#include <iostream>#include <vector>

int main() { // Cria um QR Code para a string "https://pythonlib.ru" QRcode *qr = QRcode_encodeString("https://pythonlib.ru", 0, QR_ECLEVEL_M, QR_MODE_8, 1); if (!qr) { std::cerr << "Erro ao criar QR Code"; return 1; }

int width = qr->width; std::cout << "Tamanho do QR Code: " << width << "x" << width << "";

// Dados: qr->data — array de bytes (0 ou 1) for (int y = 0; y < width; ++y) { for (int x = 0; x < width; ++x) { bool black = (qr->data[y * width + x] & 0x01); std::cout << (black ? "██" : " "); } std::cout << ""; }

QRcode_free(qr); return 0;}

Este código exibe o QR Code no console com caracteres. Para salvar em PNG ou BMP, será necessário processamento adicional.



Biblioteca CQRcode

CQRcode é uma camada sobre a libqrencode que já consegue salvar o resultado diretamente em um arquivo PNG. Ideal se você precisa de um arquivo gráfico pronto sem código extra. Suporta configuração de cor, tamanho do módulo e adição de logotipo central.



Instalação

# Baixe os fontes do GitHub: https://github.com/rickyzhang82/CQRcode# Compilação via CMake:mkdir build && cd buildcmake ..makesudo make install


Exemplo de salvamento de QR Code em PNG

#include <CQRcode.h>

int main() { // Cria o objeto gerador CQRcode qr; // Define os dados (URL, texto ou vCard) qr.setData("BEGIN:VCARDVERSION:3.0FN:PythonLibURL:https://pythonlib.ruEND:VCARD"); // Configura os parâmetros qr.setModuleSize(8); // tamanho de um módulo em pixels qr.setMargin(4); // margem (moldura branca) qr.setCorrectionLevel(QR_ECLEVEL_H); // correção de erros máxima // Salva no arquivo if (qr.savePNG("pythonlib_qr.png")) { // Sucesso } else { // Erro } return 0;}


Comparação das bibliotecas

  • libqrencode — minimalista, fornece dados brutos. Requer

Recommendations