嗨我正在開發一個應用程序來解壓黑莓10文件。爲了解壓縮文件,我使用了從github獲得的quazip庫代碼。但我不知道如何將這個庫添加到我的項目中,任何人都可以請讓我知道如何將庫添加到blackbery級聯。添加庫到瀑布
Q
添加庫到瀑布
2
A
回答
2
要將庫添加到您的Momentics的黑莓10項目,您只需要右鍵單擊該項目並轉到配置 - >添加庫...
這將啓動添加庫嚮導,您可以指定您的圖書館的路徑。只記得更新你的.pro
文件。這樣做的說明在嚮導中。如果您動態鏈接它,則還需要更新bar-descriptor.xml
,以便將該庫作爲資產打包在BAR文件中。
-1
我在我的項目中使用quazip庫的成功經驗。下面是你需要爲了遵循得到它在你的應用程序的工作步驟:
下載ZIP檔案的副本從QuaZip home page
2.複製遇到下列文件到您的項目源文件夾:
qioapi.cpp
quazip.cpp
quazipfile.cpp
quazipnewinfo.cpp
unzip.c
zip.c
crypt.h
ioapi.h
quazipdir.h
quazipfile.h
quazipfileinfo.h
quazip_global.h
quazip.h
quazipnewinfo.h
unzip.h
zip.h
處理檔案創建一個實用工具類:
頭文件:
#ifndef ZIPPER_H_
#define ZIPPER_H_
#include <QObject>
#include <QDir>
#include "quazip.h"
#include "quazipfile.h"
class Zipper : public QObject {
Q_OBJECT
public:
Zipper() {}
virtual ~Zipper() {}
static bool extract(const QString & filePath, const QString & extDirPath, const QString & singleFileName = QString(""));
static bool archive(const QString & filePath, const QDir & dir, const QString & comment = QString(""));
Q_DISABLE_COPY(Zipper)
};
源文件:
bool rc = Zipper::extract(filePath, pathToUnpack);
qDebug("extracting %s", rc ? "success" : "failure");
:
#include <QFile>
#include <QDir>
#include "Zipper.h"
bool Zipper::extract(const QString & filePath, const QString & extDirPath, const QString & singleFileName) {
QuaZip zip(filePath);
if (!zip.open(QuaZip::mdUnzip)) {
qWarning("testRead(): zip.open(): %d", zip.getZipError());
return false;
}
zip.setFileNameCodec("IBM866");
qWarning("%d entries\n", zip.getEntriesCount());
qWarning("Global comment: %s\n", zip.getComment().toLocal8Bit().constData());
QuaZipFileInfo info;
QuaZipFile file(&zip);
QFile out;
QString name;
char c;
for (bool more = zip.goToFirstFile(); more; more = zip.goToNextFile()) {
if (!zip.getCurrentFileInfo(&info)) {
qWarning("testRead(): getCurrentFileInfo(): %d\n", zip.getZipError());
return false;
}
if (!singleFileName.isEmpty())
if (!info.name.contains(singleFileName))
continue;
if (!file.open(QIODevice::ReadOnly)) {
qWarning("testRead(): file.open(): %d", file.getZipError());
return false;
}
name = QString("%1/%2").arg(extDirPath).arg(file.getActualFileName());
if (file.getZipError() != UNZ_OK) {
qWarning("testRead(): file.getFileName(): %d", file.getZipError());
return false;
}
//out.setFileName("out/" + name);
qWarning ("using %s for output fileName", qPrintable(name));
out.setFileName(name);
// this will fail if "name" contains subdirectories, but we don't mind that
out.open(QIODevice::WriteOnly);
// Slow like hell (on GNU/Linux at least), but it is not my fault.
// Not ZIP/UNZIP package's fault either.
// The slowest thing here is out.putChar(c).
while (file.getChar(&c)) out.putChar(c);
out.close();
if (file.getZipError() != UNZ_OK) {
qWarning("testRead(): file.getFileName(): %d", file.getZipError());
return false;
}
if (!file.atEnd()) {
qWarning("testRead(): read all but not EOF");
return false;
}
file.close();
if (file.getZipError() != UNZ_OK) {
qWarning("testRead(): file.close(): %d", file.getZipError());
return false;
}
}
zip.close();
if (zip.getZipError() != UNZ_OK) {
qWarning("testRead(): zip.close(): %d", zip.getZipError());
return false;
}
return true;
}
bool Zipper::archive(const QString & filePath, const QDir & dir, const QString & comment) {
QuaZip zip(filePath);
zip.setFileNameCodec("IBM866");
if (!zip.open(QuaZip::mdCreate)) {
qDebug("testCreate(): zip.open(): %d", zip.getZipError());
return false;
}
if (!dir.exists()) {
qDebug("dir.exists(%s)=FALSE", qPrintable(dir.absolutePath()));
return false;
}
QFile inFile;
QStringList sl;
// what's this ??
// recurseAddDir(dir, sl);
QFileInfoList files;
foreach (QString fn, sl) files << QFileInfo(fn);
QuaZipFile outFile(&zip);
char c;
foreach(QFileInfo fileInfo, files) {
if (!fileInfo.isFile())
continue;
QString fileNameWithRelativePath = fileInfo.filePath().remove(0, dir.absolutePath().length() + 1);
inFile.setFileName(fileInfo.filePath());
if (!inFile.open(QIODevice::ReadOnly)) {
qDebug("testCreate(): inFile.open(): %s", qPrintable(inFile.errorString()));
return false;
}
if (!outFile.open(QIODevice::WriteOnly, QuaZipNewInfo(fileNameWithRelativePath, fileInfo.filePath()))) {
qDebug("testCreate(): outFile.open(): %s", qPrintable(outFile.getZipError()));
return false;
}
while (inFile.getChar(&c) && outFile.putChar(c));
if (outFile.getZipError() != UNZ_OK) {
qDebug("testCreate(): outFile.putChar(): %d", outFile.getZipError());
return false;
}
outFile.close();
if (outFile.getZipError() != UNZ_OK) {
qDebug("testCreate(): outFile.close(): %d", outFile.getZipError());
return false;
}
inFile.close();
}
if (!comment.isEmpty())
zip.setComment(comment);
zip.close();
if (zip.getZipError() != 0) {
qDebug("testCreate(): zip.close(): %d", zip.getZipError());
return false;
}
return true;
}
4.然後在你的項目中喜歡使用它
相關問題
- 1. 瀑布圖python?
- 2. 瀑布顯示
- 3. 黑莓-10瀑布
- 4. 向瀑布添加工具提示Google圖表
- 5. 如何在Angular JS中添加瀑布圖?
- 6. highchart中疊加的瀑布圖表
- 7. 瀑布模型和修改的瀑布模型
- 8. 使用async.series或瀑布
- 9. 異步函數瀑布
- 10. Asyncjs瀑布和SinonJS存根
- 11. 瀑布地塊與ggplot
- 12. 博特Framwork:多步瀑布
- 13. 鏈接承諾瀑布
- 14. 瀑布連接條件
- 15. extjs中的瀑布圖
- 16. 如何在瀑布圖
- 17. 覆蓋Highcharts瀑布isSum()值
- 18. 奇怪的瀑布滯後
- 19. 添加到畫布
- 20. 查詢數據庫時出現異步瀑布問題
- 21. 異步瀑布最終回調得到函數未找到
- 22. 添加庫到Suitelet
- 23. 添加庫到eclipse
- 24. TOXI庫添加到加工
- 25. 將佈局添加到Viewgroup。
- 26. Magento的 - 添加到佈局
- 27. 添加圖片到畫布
- 28. 將Rect添加到畫布
- 29. 添加的BitmapImage到畫布
- 30. PyQt - 添加布局到QSplitter