mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-15 05:12:04 +08:00
!208 fix: 多显示器大图显示居中
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -52,3 +52,4 @@ debian/files
|
|||||||
debian/*.substvars
|
debian/*.substvars
|
||||||
debian/spark-store
|
debian/spark-store
|
||||||
|
|
||||||
|
.vscode/*
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ void image_show::setImage(QPixmap image)
|
|||||||
QImage re_screen1;
|
QImage re_screen1;
|
||||||
QImage re_screen0 = screen0.scaled(QSize(400, 300), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
QImage re_screen0 = screen0.scaled(QSize(400, 300), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||||
|
|
||||||
// 获取主屏幕尺寸
|
// 获取当前app所在的主屏幕尺寸
|
||||||
desktop_w = QGuiApplication::primaryScreen()->geometry().width();
|
desktop_w = QGuiApplication::screenAt(QCursor().pos())->geometry().width();
|
||||||
desktop_h = QGuiApplication::primaryScreen()->geometry().height();
|
desktop_h = QGuiApplication::screenAt(QCursor().pos())->geometry().height();
|
||||||
|
|
||||||
if (screen0.width() > (desktop_w - 20) || screen0.height() > (desktop_h - 20))
|
if (screen0.width() > int(desktop_w / 3 * 2) || screen0.height() > int(desktop_h / 3 * 2))
|
||||||
{
|
{
|
||||||
re_screen1 = screen0.scaled(QSize(desktop_w - 20, desktop_h - 20), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
re_screen1 = screen0.scaled(QSize(int(desktop_w / 3 * 2), int(desktop_h / 3 * 2)), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||||
m_image = QPixmap::fromImage(re_screen1);
|
m_image = QPixmap::fromImage(re_screen1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -42,12 +42,12 @@ void image_show::setImage(QPixmap image)
|
|||||||
void image_show::mousePressEvent(QMouseEvent *)
|
void image_show::mousePressEvent(QMouseEvent *)
|
||||||
{
|
{
|
||||||
m_dialog->setimage(m_image);
|
m_dialog->setimage(m_image);
|
||||||
m_dialog->showFullScreen();
|
m_dialog->show();
|
||||||
|
|
||||||
// 识别主屏幕尺寸并设置 widget 大小
|
// 识别主屏幕尺寸并设置 widget 大小
|
||||||
m_dialog->setFixedSize(desktop_w, desktop_h);
|
m_dialog->setFixedSize(qMin(desktop_w, m_image.width() + int(desktop_h / 16 * m_image.width() / m_image.height())), qMin(desktop_h, m_image.height() + int(desktop_h / 16)));
|
||||||
|
|
||||||
m_dialog->move(0, 0);
|
m_dialog->move(QGuiApplication::screenAt(QCursor().pos())->geometry().center() - m_dialog->rect().center());
|
||||||
}
|
}
|
||||||
image_show::~image_show()
|
image_show::~image_show()
|
||||||
{
|
{
|
||||||
|
|||||||
25
src/main.cpp
25
src/main.cpp
@@ -43,8 +43,33 @@ int main(int argc, char *argv[])
|
|||||||
// 浏览器开启 GPU 支持
|
// 浏览器开启 GPU 支持
|
||||||
#ifdef __sw_64__
|
#ifdef __sw_64__
|
||||||
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--no-sandbox");
|
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--no-sandbox");
|
||||||
|
#elif __aarch64__
|
||||||
|
if (!Utils::isWayland()) {
|
||||||
|
QString env = QString::fromUtf8(qgetenv("QTWEBENGINE_CHROMIUM_FLAGS"));
|
||||||
|
env = env.trimmed();
|
||||||
|
/**
|
||||||
|
* NOTE: 参考帮助手册代码,对于部分ARM CPU 设备,
|
||||||
|
* --disable-gpu 保证 X11 环境下网页正常显示
|
||||||
|
* --single-process 避免 X11 环境下 QtWebEngine 崩溃(可选)
|
||||||
|
*/
|
||||||
|
env += " --disable-gpu";
|
||||||
|
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", env.trimmed().toUtf8());
|
||||||
|
|
||||||
|
QSurfaceFormat format;
|
||||||
|
format.setRenderableType(QSurfaceFormat::OpenGLES);
|
||||||
|
QSurfaceFormat::setDefaultFormat(format);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: https://zhuanlan.zhihu.com/p/550285855
|
||||||
|
* 避免 X11 环境下从 QtWebEngine 后退回到 QWidget 时黑屏闪烁
|
||||||
|
*/
|
||||||
|
qputenv("QMLSCENE_DEVICE", "softwarecontext");
|
||||||
|
DApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FIXME: 对于麒麟 CPU 设备,调用 QtWebEngine 会导致客户端崩溃;
|
* FIXME: 对于麒麟 CPU 设备,调用 QtWebEngine 会导致客户端崩溃;
|
||||||
* 暂时不对 CPU 进行判断,对 wayland 环境下统一处理
|
* 暂时不对 CPU 进行判断,对 wayland 环境下统一处理
|
||||||
|
|||||||
Reference in New Issue
Block a user