QT 二维码识别程序
新建工程
成功创建工程
在Pro里面加入
INCLUDEPATH += ../QZXingLib
LIBS += -L$$PWD/lib -lQZXing
在mainwindow.h中加入下面代码
#define QRBUFSIZ 20480
typedef bool (*fpGetQrStr)(const char*, char*, int);
class QLibrary;
private:
Ui::CMainWindow *ui;
QString m_fileName;
fpGetQrStr GetQrStr;
将main.cpp修改成如下,其中我注释的那两行是因为版本的原因,有的版本可以不注释,具体原因可以自行搜索。
#include "MainWindow.h"
#include <QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
CMainWindow w;
w.show();
return a.exec();
}
UI界面设计
用到4个控件,一切都以简单的来,
然后按键 跳转到槽
加入头文件
#include "../QZXingLib/QZXing/QZXing.h"
#include <QTextCodec>
#include <QFileDialog>
#include <QMessageBox>
在按键中写入下面代码
void MainWindow::on_pushButton_clicked()
{
m_fileName = QFileDialog::getOpenFileName(this,
tr("二维码打开文件"),
"./",
tr("任何文件(*.*)"
";;文本文件(*.png)")
);
if(m_fileName.isEmpty() == false)
{
ui->lineEdit->setText(m_fileName);
QImage img; //加载图像
if(!(img.load(m_fileName)))
{
QMessageBox::information(this,
tr("打开图像失败"),
tr("打开图像失败!"));
return;
}
img=img.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(img));
QZXing decoder(QZXing::DecoderFormat_None);
QString qrmsg = decoder.decodeImage(img);
ui->textEdit->setText(tr(">> %1").arg(qrmsg));
}
}
`
然后代码就写完了,这个时候Ctri+R肯定会有报错
因为要把识别二维码的库加进来,把原来debug的文件覆盖。
最后运行
工程链接
链接:https://pan.baidu.com/s/15BuiDJ9FxV4qIxqmT53Row
提取码:qvy7