C++ Ориентация Qt QCamera Видоискатель

У меня проблема с видоискателем QCamera Qt. Когда я запускаю свое приложение, экран, который я вижу в видоискателе, поворачивается на 270°. Когда я поворачиваю свой мобильный телефон в альбомную ориентацию, видоискатель отображает его повернутым на 180°. Я пробовал следующие версии Qt: 5.9.4 и 5.10.4 и 5.11.1

Я попробовал следующие версии iOS: 10.x и 11.4 (текущая версия)

Моя версия XCode: 9.4.1 (9F2000)

Это мой исходный код:

MainWindow::MainWindow(QWidget* parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    , camera(nullptr)
    , camList(QCameraInfo::availableCameras(QCamera::Position::BackFace))
    , imgCapture(nullptr)
{
    ui->setupUi(this);

    QObject::connect(ui->captureButton, &QPushButton::clicked, this, &MainWindow::OnCaptureButtonClicked);
    QObject::connect(ui->cameraComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &MainWindow::OnCameraChanged);
    QObject::connect(ui->zoomSlider, &QSlider::valueChanged, this, &MainWindow::OnZoomChanged);

    for (QList<QCameraInfo>::iterator it = camList.begin(); it != camList.end(); ++it)
    {
        ui->cameraComboBox->addItem(it->description());
    }
}

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

void MainWindow::OnCameraChanged(int index)
{
    if (this->camera != nullptr)
    {
        this->camera->stop();
        delete this->camera;
    }

    this->camera = new QCamera(camList.at(index), this);
    this->focus = this->camera->focus();
    this->maximumOptZoom = this->focus->maximumOpticalZoom();
    ui->zoomSlider->setMaximum(this->maximumOptZoom * this->focus->maximumDigitalZoom() * 10);

    this->camera->setViewfinder(ui->viewfinder);
    this->camera->setCaptureMode(QCamera::CaptureStillImage);
    this->camera->start();
}

void MainWindow::OnCaptureButtonClicked()
{
    this->imgCapture = new QCameraImageCapture(this->camera, this);
    QObject::connect(this->imgCapture, &QCameraImageCapture::imageCaptured, this, &MainWindow::OnImageCapured);
    this->camera->searchAndLock();
    this->imgCapture->setCaptureDestination(QCameraImageCapture::CaptureToFile);
    this->imgCapture->capture();
}

void MainWindow::OnImageCapured(int, const QImage& image)
{
    QPixmap pix = QPixmap::fromImage(image).scaled(ui->previewLabel->size(), Qt::KeepAspectRatio);
    ui->previewLabel->setPixmap(pix);
    this->camera->unlock();
    this->imgCapture->deleteLater();
}

Ты хоть представляешь, что может быть причиной этой странности?

0 ответов

Другие вопросы по тегам