别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述当我使用Qt Android Extras C ++ Classes时,如何防止Windows上的错误相关的知识,希望能为你提供帮助。
我在android上使用了以下问题的解决方案来打开文件。
Qt/Necessitas - reasonable QFileDialog replacement/skin?
但它只适用于Android,这些代码(Qt Android Extras C++ Classes)不能在Windows上运行?
例如我有以下错误?
#include<
QAndroidJniObject>
#include<
QtAndroid>
#include<
QAndroidActivityResultReceiver>
无法打开包含文件:'QAndroidJniObject':没有这样的文件或目录我用它来解决
#if defined(Q_OS_ANDROID)
#include<
QAndroidJniObject>
#include<
QtAndroid>
#include<
QAndroidActivityResultReceiver>
#endif
但是当我使用它时,我又有另一个错误?
class ResultReceiver:public QAndroidActivityResultReceiver//error :'QAndroidActivityResultReceiver': base class undefined
{
AndroidFileDialog *_dialog;
public:
ResultReceiver(AndroidFileDialog *dialog);
virtual ~ResultReceiver();
void handleActivityResult(int receiverRequestCode, int resultCode, const QAndroidJniObject &
data);
QString uriToPath(QAndroidJniObject uri);
};
'QAndroidActivityResultReceiver':基类未定义答案类
ResultReceiver
继承了你正确停止的QAndroidActivityResultReceiver
(来自Android Extras),包括Windows操作系统,因此错误。You must have 2 variants of
ResultReceiver
class, one for Windows, another for Android. When you design it for Windows you should not inherit QAndroidActivityResultReceiver
and use QFileDialog
.
In the same way you solved the import
issues with Qt pre-processor,you could define ResultReceiver
class , for example:#if defined(Q_OS_ANDROID)class AndroidFileDialog : public QObject
{
Q_OBJECT
...
private:
class ResultReceiver : public QAndroidActivityResultReceiver {
AndroidFileDialog *_dialog;
...
};
...
...
};
#else
class ResultReceiver // Here do not inherit classes from Android Extras
{
QFileDialog *_dialog;
// use standard Qt C++ classes
...
...
};
#endif //Q_OS_ANDROID
另一答案这是可以理解的,项目是根据您的* .pro文件编译的,该文件包含所有项目文件。因此,您尝试在Windows上编译Android相关文件,因此您会收到错误。您应该根据目标操作系统在* .pro文件中包含/排除文件,例如:
SOURCES +=
common.cppHEADERS +=
common.hwin32 {
SOURCES +=
winfile.cppHEADERS +=
winfile.hLIBS += -lwin
}android {
SOURCES +=
androidfile.cppHEADERS +=
androidfile.hLIBS += -landroid
}
【当我使用Qt Android Extras C ++ Classes时,如何防止Windows上的错误】因此不会编译/链接不必要的文件
推荐阅读
- Azure Web App节点部署,更改应用程序根目录()
- 为什么我的Qt应用程序会忽略applicationDisplayName的设置()
- C#console app与DB first Entity Framework和AutoMapper,无法将Model转换为DbModel
- Web应用程序的客户端与服务器端与预渲染
- 如何构建用于开发的Raspberry Pi服务器
- 挖掘用于前端开发的ClojureScript
- Redux状态管理的顶级控制(ClojureScript教程)
- F#教程(如何构建完整的F#应用程序)
- 作为JS开发人员,这就是让我彻夜难眠的原因