0
我正在構建一個使用Qt Quick Controls的應用程序,並且我還需要一些C++(用於打印和讀取文件)。我挖了this,所以我已經將它修改爲我的需求:C++和qml之間的問題
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 ::列表()';未定義引用'Bonuri :: actualPrint(QPrinter *,QString const &)'
還有一件事:你能幫我優化代碼嗎(我是C++的新手,真的不知道爲什麼它是這樣的是,我只是用例子)。
問題是,QTemporaryFile被刪除時,它超出了範圍,所以我能做什麼? – user2563892 2014-11-04 17:41:13
@ user2563892創建QTemporaryFile作爲類成員。 – Chernobyl 2014-11-04 17:42:30
我該怎麼做? – user2563892 2014-11-04 17:42:53