android - 当我使用 Qt Android Extras C++ 类时如何防止 Windows 上的错误
问题描述
我使用以下问题的解决方案在 Android 上打开文件。
Qt/Necessitas - 合理的 QFileDialog 替换/皮肤?
但它只适用于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 操作系统,因此出现错误。
ResultReceiver
类的变体,一个用于 Windows,另一个用于 Android。当你为 Windows 设计它时,你不应该继承QAndroidActivityResultReceiver
和使用QFileDialog
.
与您解决import
Qt 预处理器问题的方式相同,您可以定义ResultReceiver
class ,例如:
#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
推荐阅读
- node.js - 没有调用 DeserializeUser 并且没有使用 express 和 passportJS 将 cookie 发送到客户端
- fasm - 为什么仅使用符号标志不能进行带符号的数字比较
- python - 使用 Opencv 和 Python 训练 SVM 和预测
- python - 是否可以通过 scikit.learn 创建一个预测分层类/标签的 RandomForestClassifier?
- arrays - 打字稿:如何在数组中按分钟分组?
- java - Spring MVC - 来自过滤器的内容类型感知响应
- javascript - Google Apps 脚本:在对象文档中找不到函数 insertText
- python - 管道 - 类型错误:fit_transform() 接受 2 个位置参数,但给出了 3 个
- ios - 在 Cordova iOS 包中找不到 `OBJROOT="$OBJROOT"` 以尝试修复构建错误:xcodebuild:命令失败,退出代码为 65
- mysql - 错误:ER_NO_DB_ERROR:始终使用数据库限定对象引用时未选择数据库(Node.js + MySql)