gpt4 book ai didi

c++ - 如何从保存的几何图形中获取屏幕编号?

转载 作者:行者123 更新时间:2023-11-30 04:43:31 25 4
gpt4 key购买 nike

为了恢复上一个窗口的几何形状和状态,我使用了类似于 this Qt document 中建议的代码:

void MainWindow::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
QMainWindow::closeEvent(event);
}

void MainWindow::readSettings()
{
QSettings settings("MyCompany", "MyApp");
restoreGeometry(settings.value("geometry").toByteArray());
}

查看 Qt 的源代码 (qwidget.cpp),QWidget::saveGeometry及其兄弟 restoreGeometry 基本上是几何图形、屏幕编号和窗口状态的序列化。

现在,应用程序在启动期间显示启动画面。我想在显示应用程序窗口的同一个监视器中显示这样的启动画面。我可以根据 QScreen geometry 设置启动画面几何图形,但我需要屏幕编号来完成此代码:

const auto screens = qApp->screens();
const auto geometry = screens[/* screen number here */]->geometry();

如何从保存的几何体中只获取屏幕编号?

最佳答案

我已经能够解决创建伪造的 QWidget(从未显示)、恢复其几何形状并使用 QDesktopWidget::screenNumber 的问题将显示器放在应有的位置:

int MainWindow::getMonitorToShowSplashScreen() const
{
QSettings settings("MyCompany", "MyApp");

QWidget fake_widget;
fake_widget.restoreGeometry(settings.value("geometry").toByteArray());

return qApp->desktop()->screenNumber(&fake_widget);
}

关于c++ - 如何从保存的几何图形中获取屏幕编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com