I used the solution of below question for open file on Android.
Qt/Necessitas - reasonable QFileDialog replacement/skin?
But it works just on android,this codes (Qt Android Extras C++ Classes) don't run on windows?
for example i got the below errors?
#include<QAndroidJniObject>
#include<QtAndroid>
#include<QAndroidActivityResultReceiver>
Cannot open include file: 'QAndroidJniObject': No such file or directory
I used this for solving
#if defined(Q_OS_ANDROID)
#include<QAndroidJniObject>
#include<QtAndroid>
#include<QAndroidActivityResultReceiver>
#endif
but when i used this I have got another errors?
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': base class undefined
The class ResultReceiver
inherits QAndroidActivityResultReceiver
(from Android Extras) which you correctly stopped including for windows OS, thus the error.
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