Как найти путь к файлам в QT Android и показать файлы (изображения) из внутреннего хранилища AndroidC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как найти путь к файлам в QT Android и показать файлы (изображения) из внутреннего хранилища Android

Сообщение Anonymous »

Поэтому я хочу создать программу, которая может показывать изображения из внутренних файлов Android (поэтому мне не нужно обновлять apk, чтобы показывать/+ новое изображение, пользователь может просто дать и выбрать сам) вместе с вами поскольку пользователь просто вводит ваше имя и показывает его, чтобы это произошло, мне нужно знать его путь, для этого я создаю APK-файл «показать изображение, когда вы его выбираете».
в виджете qt это выглядит так

Код: Выделить всё

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 
#include 

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);

// Dialog to choose an image
QString filePath = QFileDialog::getOpenFileName(this, "Open Image", "/storage/emulated/0", "Images (*.png *.xpm *.jpg)");
if (!filePath.isEmpty()) {
// Set the file path to the label for displaying path
ui->labelFilePath->setWordWrap(true);
ui->labelFilePath->setText(filePath);

QPixmap pixmap(filePath);
if (!pixmap.isNull()) {
ui->label->setPixmap(pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
}
}
}

MainWindow::~MainWindow()
{
delete ui;
}

все работает хорошо, но результат выглядит примерно так: content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0% 2FDownload%2Fdio.jpg, вместо этого что-то вроде /sdcard/Download/dio.jpg к вашему сведению, это был реальный путь, который я тоже могу использовать, я нашел его в студии Android
После этого я сделаю шоу тем, кому это понравится

Код: Выделить всё

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include \
#include \
#include \

MainWindow::MainWindow(QWidget \*parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui-\>setupUi(this);
}

MainWindow::\~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
QString filename = ui-\>filename-\>text();

// Tambahkan pengecekan panjang teks jika diperlukan
if (filename.length() < 1) {
QMessageBox::warning(this, "Input Error", "Please enter at least 1 characters for the filename.");
return;
}

//QString imagePath = "content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2F"+filename+".jpg";
QString imagePath = "content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Fjoko.jpg";
//QString imagePath = "content://com.android.providers.media.documents/document/image%3A" + filename + ""; //19,20,21
//QString imagePath = "document/raw:/storage/emulated/0/Download/"+filename+".jpg";
QImage image(imagePath);

if (!image.isNull()) {
QImage scaledImage = image.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);

// Ubah QImage ke QPixmap
QPixmap pixmap = QPixmap::fromImage(scaledImage);

// Pastikan pixmap tidak null
if (!pixmap.isNull()) {
ui->label->setFixedSize(pixmap.size());
ui->label->setPixmap(pixmap);
ui->label->update();
} else {
QMessageBox::warning(this, "Load Error", "Failed to convert image.");
}
} else {
QMessageBox::warning(this, "Load Error", "The image could not be loaded.  Please check the filename and file path.");

}
}
проблема заключалась в том, что
  • он ​​никогда не показывал введенный вами текст, если не 12 символов++
    я уже напечатано, но ничего не отображается
    12++ символов отображается
  • когда вы нажимаете кнопку, отображается только половина, вам нужно нажать отредактируйте строку, чтобы сделать ее полной
    половину показывать
    полной, когда вы синхронизируете lineedit
* *установка была: Android 9, SDK 28, JDK 19.0.2.7, с комплектом Android 6.7 x86
**
это установка
К вашему сведению Я создаю первую программу с помощью qtQuick Cmake, и в ней полный беспорядок (принудительное закрытие), и я делаю вторую программу с помощью QtQuick Qmake, и она работает нормально, путь в порядке, например (sdcard/Download/"+filename+".jpg ), но не работает с (Content://...)
Решение показать реальный путь к файлам, а не только content:// или обойти все это

Подробнее здесь: https://stackoverflow.com/questions/784 ... nternal-st
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»