【发布时间】:2014-12-19 12:12:44
【问题描述】:
在 mac 上构建 Qt 程序 - 在 windows 和 Linux 中都可以使用。
1 #include <QDir>
2 #include <QFileDialog>
3 ....
4 void afunction()
5 {
6 QDir directory;
7 if (! (directory.mkpath(mypath)) )
8 .......
9 }
10 void anotherfunction() // likely irrelevant but showing why QFileDialog is included... no error here though
11 {
12 .....
13 filename = QFileDialog::getOpenFileName(0, caption, filename, filter, 0, QFileDialog::ReadOnly);
14 ....
15 }
第 6 行出错:
expected unqualified-id
QDir directory
^
expected expresion
if (! (directory.mkpath(mypath)) )
^
我点击“关注”QDir,然后转到qdir.h
class Q_CORE_EXPORT QDir
...
似乎存在...我将“directory”替换为“d”,它通过了这部分错误...在qfiledialog.h...中给出错误...其中许多方法都在使用@ 987654329@ 作为QString,同时还有一个方法directory()...错误说“expected ')'”
我不知道如何处理实际 qt 文件中显示的错误,但我了解到,当我看到此类错误时,问题出在调用代码中。
顺便说一句,尝试
6 //QDir directory;
7 if (! (QDir::mkpath(mypath)) )
更不对,call to non-static member function without an object argument.我希望有一个静态版本,所以我不必创建对象......但显然我必须这样做,并且QDir有一个默认构造函数:
QDir(cost QString &path = QString()); inside `qdir.h`
仍然尝试过(就像 qt 文档中的示例一样):
6 QDir myDirectory(mypath);
7 if (! (myDirectory.mkpath(mypath)) )
重命名“目录”会导致 qfiledialog.h 出现错误,而不是重命名(使用“目录”作为变量名),在我的代码中仍然会出现同样的错误。
某处一定有一些错误......我知道mac上的构建选项比windows甚至linux更“严格”......
有没有可能我遗漏了一些包含?
在pro文件中,我有
QT += core \
gui \
svg
mac 上的 QT 版本:4.8.6(在使用 4.8.1 构建的 Linux 上)
我找不到导致我的错误的原因,我不知道还能尝试什么...我发现的具有类似错误的“类似问题”要么在功能块之外有代码,要么使用未定义的类成员......这里不是这种情况。
我不知道该错误是否与具有更严格设置的 mac 编译器有关,使用 qt 版本,即使使用 qt 本身(似乎其他人使用 c++ 没有 qt),使用我的代码.. .
【问题讨论】: