diff --git a/plugins/platforms/virtual/virtual_backend.h b/plugins/platforms/virtual/virtual_backend.h --- a/plugins/platforms/virtual/virtual_backend.h +++ b/plugins/platforms/virtual/virtual_backend.h @@ -54,7 +54,7 @@ QPainterBackend* createQPainterBackend() override; OpenGLBackend *createOpenGLBackend() override; - Q_INVOKABLE void setVirtualOutputs(int count, QVector geometries = QVector()); + Q_INVOKABLE void setVirtualOutputs(int count, QVector geometries = QVector(), QVector scales = QVector()); Outputs outputs() const override; Outputs enabledOutputs() const override; diff --git a/plugins/platforms/virtual/virtual_backend.cpp b/plugins/platforms/virtual/virtual_backend.cpp --- a/plugins/platforms/virtual/virtual_backend.cpp +++ b/plugins/platforms/virtual/virtual_backend.cpp @@ -124,9 +124,10 @@ return m_enabledOutputs; } -void VirtualBackend::setVirtualOutputs(int count, QVector geometries) +void VirtualBackend::setVirtualOutputs(int count, QVector geometries, QVector scales) { Q_ASSERT(geometries.size() == 0 || geometries.size() == count); + Q_ASSERT(scales.size() == 0 || scales.size() == count); bool countChanged = m_outputs.size() != count; qDeleteAll(m_outputs.begin(), m_outputs.end()); @@ -136,6 +137,9 @@ int sumWidth = 0; for (int i = 0; i < count; i++) { VirtualOutput *vo = new VirtualOutput(this); + if (scales.size()) { + vo->setScale(scales.at(i)); + } if (geometries.size()) { vo->setGeometry(geometries.at(i)); } else if (!vo->geometry().isValid()) {