c++ - 如何在扩展显示器上显示 QLabel
问题描述
我有非常简单的 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());
解决方案
你需要:
确保窗口位于屏幕所属的虚拟桌面上。
它在给定屏幕上的某个地方。
因此:
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());
}
推荐阅读
- import - Gitlab Wiki - 导入存储库时如何导入 wiki
- c# - 信号量如何从另一个线程释放?
- asynchronous - 异步数据流上的 Apache Flink 规则
- java - 是 JavaCE 中的 RESTful Web 服务器
- vim - Vim 和 IPython
- python - 如何在列表项目之间获取项目?
- wagtail - 如何防止 Wagtail CMS 中的同一页面编辑冲突?
- neo4j - 无依赖满足类型接口 org.neo4j.graphdb.GraphDatabaseService
- c# - 如何从执行程序集中引用库?
- python - Python 脚本不会在任务计划程序上运行