【发布时间】:2014-11-05 01:45:06
【问题描述】:
我正在使用 Qt Quick Controls 构建一个应用程序,并且我还需要一些 C++(用于打印和读取文件)。我挖了this,所以我根据自己的需要修改了它:
bonuri.h
#ifndef BONURI_H
#define BONURI_H
#include <QObject>
#include <QTemporaryFile>
#include <QIODevice>
#include <QPainter>
#include <QtSvg/QSvgRenderer>
#include <QFile>
#include <QTextStream>
#include <QtPrintSupport/QPrintPreviewDialog>
#include <QtPrintSupport/QPrinter>
class Bonuri : public QObject {
Q_OBJECT
public:
explicit Bonuri(QObject *parent = 0);
public slots:
void printSVG(const QString& in);
QString list();
void actualPrint(QPrinter* p, const QString& in);
};
#endif // BONURI_H
bonuri.cpp
#include "bonuri.h"
Bonuri::Bonuri(QObject *parent) :
QObject(parent)
{
}
void Bonuri::printSVG(const QString& in){
QPrinter printer(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A5);
QPrintPreviewDialog printDialog(&printer);
connect(&printDialog, SIGNAL(paintRequested(QPrinter*)), SLOT(actualPrint(QPrinter*, in)));
printDialog.exec();
}
void actualPrint(QPrinter* p, const QString& in){
QTemporaryFile file;
if (file.open()){
QTextStream out(&file);
out << in;
QSvgRenderer renderer(file.fileName());
QPainter myPainter(p);
myPainter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
renderer.render(&myPainter);
}
}
QString list(){
QFile file("Bonuri.json");
QString totalLine;
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
QTextStream in(&file);
while (!in.atEnd()){
QString line = in.readLine();
totalLine += line;
}
}
return totalLine;
}
问题是我不是 C++ 专家,无法调试。
问题: moc_bonuri.cpp
对 'Bonuri::list()' 的未定义引用;对 'Bonuri::actualPrint(QPrinter*, QString const&)' 的未定义引用
还有一件事:你能帮我优化代码吗(我是 C++ 新手,真的不知道为什么会这样,我只是使用了示例)。
【问题讨论】: