У меня проблема с видоискателем 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();
}
Ты хоть представляешь, что может быть причиной этой странности?
Задача ещё не решена.
Других решений пока нет …