gpt4 book ai didi

c++ - Qt 5.8 中的 Qt 5.5 项目构建错误

转载 作者:行者123 更新时间:2023-11-28 01:52:39 26 4
gpt4 key购买 nike

我正在 Qt 5.5 上开发一个简单的应用程序。由于 Qt 5.5 没有 QChart类功能,我必须在 5.8 发行版上安装和构建我的 Qt 5.5 项目。对于我的项目,我正在使用名为 QXlsx 的第三方软件。创建和编辑 Excel 电子表格。该库在 Qt 5.5 中运行完美,但无法在 Qt 5.8 版本上编译。编译返回如下错误;

/Users/Vino/Documents/My Stuff/Qt Projects/Fundemental Analysis/FundementalAnalysis/3rdparty/qtxlsx/src/xlsx/xlsxzipreader.cpp:52: error: implicit instantiation of undefined template 'QVector<QZipReader::FileInfo>'
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
^
I am not sure what it means, but I am quite confident that I don't have to make any changes on the source code of this library since it worked previously on Qt 5.5.

无论如何这是发生错误的源代码

#include "xlsxzipreader_p.h"
#include <private/qzipreader_p.h>



namespace QXlsx {

ZipReader::ZipReader(const QString &filePath) :
m_reader(new QZipReader(filePath))
{
init();
}

ZipReader::ZipReader(QIODevice *device) :
m_reader(new QZipReader(device))
{
init();
}

ZipReader::~ZipReader()
{

}

void ZipReader::init()
{
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
foreach (const QZipReader::FileInfo &fi, allFiles) {
if (fi.isFile)
m_filePaths.append(fi.filePath);
}
}

bool ZipReader::exists() const
{
return m_reader->exists();
}

QStringList ZipReader::filePaths() const
{
return m_filePaths;
}

QByteArray ZipReader::fileData(const QString &fileName) const
{
return m_reader->fileData(fileName);
}
}// namespace Xlsx

错误发生在这个函数;

    void ZipReader::init()
{
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
foreach (const QZipReader::FileInfo &fi, allFiles)
{
if (fi.isFile)
m_filePaths.append(fi.filePath);
}
}

作为解决方案,我尝试添加 #include <QList> 源代码自 QList 通过指定 header 进行引用,但这并不能解决问题当我添加 #include <QList> , 出现了无数新的错误。我该如何构建这个项目?

最佳答案

QtXLSX 的错误还没有解决。

解决方案很简单。

在xlsxzipreader.cpp文件中,需要包含:

#include <QVector>

在函数 void ZipReader::init(){} 之后,我们需要更新类型:

void ZipReader::init(){
// This was the previous definition
//QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();

QVector<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();

foreach (const QZipReader::FileInfo &fi, allFiles) {
if (fi.isFile)
m_filePaths.append(fi.filePath);
}
}

只需保存并重做:

make
make install

这已在 Qt 5.8.x、5.9.x 上测试

干杯!

关于c++ - Qt 5.8 中的 Qt 5.5 项目构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com