Hello everyone!
Does anyone have issues with the Wayland compositor? Here I have a Linux + Weston + Wayland machine with a small integrated LCD display (800x480) and an external HDMI monitor (1920x1080).
My goal is to programmatically select the screen on which showing a QFrame, but no matter what I do it appears on the main display. Here's an example of my attempts:
bool Manager::StartOnScreen(int screenIdx)
{
//Check if requested screen is available
if(screenIdx >= _desktopWidget->screenCount())
{
qDebug() << "Screen index out of range";
return false;
}
QWidget* screen
= _desktopWidget
->screen
(screenIdx
);
//Set frame color
if(screenIdx == 0)
mainFrame->setStyleSheet("background-color:rgb(0, 0, 254);");
else
mainFrame->setStyleSheet("background-color:rgb(254, 0, 0);");
int width = screen->geometry().width();
int height = screen->geometry().height();
int x = screen->geometry().x();
int y = screen->geometry().y();
qDebug
() <<
"Screen config #" + QString::number(screenIdx
) + ": position=" + QString::number(x
) + "x" + QString::number(y
) + " size=" +QString::number(width
) + "x" + QString::number(height
);
//Set frame screen and geometry
mainFrame->setGeometry(screen->geometry());
//Show the frame (windowed)
mainFrame->show();
//Show the frame (fullscreen)
//mainFrame->showFullScreen();
//Try to move the frame with setScreen
//mainFrame->windowHandle()->setScreen(qApp->screens().at(screenIdx));
return true;
}
bool Manager::StartOnScreen(int screenIdx)
{
_desktopWidget = QApplication::desktop();
//Check if requested screen is available
if(screenIdx >= _desktopWidget->screenCount())
{
qDebug() << "Screen index out of range";
return false;
}
QWidget* screen = _desktopWidget->screen(screenIdx);
QFrame* mainFrame = new QFrame();
//Set frame color
if(screenIdx == 0)
mainFrame->setStyleSheet("background-color:rgb(0, 0, 254);");
else
mainFrame->setStyleSheet("background-color:rgb(254, 0, 0);");
int width = screen->geometry().width();
int height = screen->geometry().height();
int x = screen->geometry().x();
int y = screen->geometry().y();
qDebug() << "Screen config #" + QString::number(screenIdx) + ": position=" + QString::number(x) + "x" + QString::number(y) + " size=" +QString::number(width) + "x" + QString::number(height);
//Set frame screen and geometry
mainFrame->setGeometry(screen->geometry());
//Show the frame (windowed)
mainFrame->show();
//Show the frame (fullscreen)
//mainFrame->showFullScreen();
//Try to move the frame with setScreen
//mainFrame->windowHandle()->setScreen(qApp->screens().at(screenIdx));
return true;
}
To copy to clipboard, switch view to plain text mode
Bookmarks