我有非常简单的qt应用程序。我的目标是,如果我点击一个按钮,它应该在我的第二个/扩展显示器上显示消息。我的应用程序将在主监视器上运行,显示消息应出现在第二台监视器上。多数民众赞成我的方法如何:
void MainWindow::on_pushButton_clicked()
{
QLabel *ql = new QLabel();
ql->setText("Order is Ready");
ql->move(QGuiApplication::screens().last()->geometry());
ql->show();
.....
}
但这对我不起作用。我也试过但也没有工作:(任何帮助都会受到赞赏吗?
ql->windowHandle()->setScreen(QGuiApplication::screens().last());
答案 0 :(得分:1)
此示例不为我“编译”,但尝试这样的事情 - 设置坐标
ql->move(QGuiApplication::screens().last()->geometry().width(), QGuiApplication::screens().last()->geometry().height() / 2);
注意:问题是你的显示器是哪个,哪个是最后一个......
答案 1 :(得分:1)
你需要:
确保窗口位于屏幕所属的虚拟桌面上。
它位于给定屏幕上的某个位置。
因此:
void centerWidgetOnScreen(QWidget *widget, QScreen *screen) {
auto *window = widget->windowHandle();
Q_ASSERT(screen);
Q_ASSERT(window);
window->setScreen(screen);
auto newCenter = screen->geometry().center();
auto rect = window->geometry();
rect.moveCenter(newCenter);
window->setGeometry(rect);
}
void centerWidgetOnLastScreen(QWidget *widget) {
centerWidgetOnScreen(widget, QGuiApplication::screens().last());
}