fix: fixed HiDPI blurred QrImage, added new command arg noScaleFactor

This commit is contained in:
Qv2ray-dev 2020-03-21 15:52:07 +08:00
parent ae0776cae9
commit b6ea1d9a96
8 changed files with 18 additions and 22 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
.vs/
*.qm
./.vscode
CMakeSettings.json
SourceTrail/

View File

@ -1 +1 @@
4956
4957

View File

@ -14,8 +14,6 @@ namespace Qv2ray
bool debugLog;
/// Enable Network toolbar plugin.
bool enableToolbarPlguin;
/// Force Enable HiDPI support.
bool forceHiDPI;
/// Disable Qt scale factors support.
bool noScaleFactors;
};

View File

@ -9,7 +9,6 @@ namespace Qv2ray::common
runAsRootOption("I-just-wanna-run-with-root", tr("Explicitly run Qv2ray as root.")), //
debugOption("debug", tr("Enable Debug Output")), //
noScaleFactorOption("noScaleFactor", tr("Disable manually set QT_SCALE_FACTOR")), //
forceHiDpiOption("forceHiDPI", tr("Force enable HiDPI support for Qt")), //
withToolbarOption("withToolbarPlugin", tr("Enable Qv2ray network toolbar plugin")), //
//
helpOption("FAKE"), versionOption("FAKE")
@ -20,7 +19,6 @@ namespace Qv2ray::common
parser.addOption(noAPIOption);
parser.addOption(runAsRootOption);
parser.addOption(debugOption);
parser.addOption(forceHiDpiOption);
parser.addOption(noScaleFactorOption);
parser.addOption(withToolbarOption);
helpOption = parser.addHelpOption();
@ -59,12 +57,6 @@ namespace Qv2ray::common
StartupOption.debugLog = true;
}
if (parser.isSet(forceHiDpiOption))
{
DEBUG(MODULE_INIT, "forceHiDpiOption is set.")
StartupOption.forceHiDPI = true;
}
if (parser.isSet(noScaleFactorOption))
{
DEBUG(MODULE_INIT, "noScaleFactorOption is set.")

View File

@ -28,7 +28,6 @@ namespace Qv2ray::common
QCommandLineOption runAsRootOption;
QCommandLineOption debugOption;
QCommandLineOption noScaleFactorOption;
QCommandLineOption forceHiDpiOption;
QCommandLineOption withToolbarOption;
QCommandLineOption helpOption;
QCommandLineOption versionOption;

View File

@ -239,10 +239,14 @@ namespace Qv2ray::common
QGraphicsBlurEffect pBlur;
//
view.setScene(&scene);
view.resize(pixmap.size() / QWidget().devicePixelRatio());
view.setSceneRect(pixmap.rect());
scene.setSceneRect(pixmap.rect());
pBlur.setBlurRadius(rad);
QGraphicsPixmapItem *p = view.scene()->addPixmap(pixmap);
p->setGraphicsEffect(&pBlur);
view.setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
view.setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
return view.grab();
}
@ -255,9 +259,13 @@ namespace Qv2ray::common
pColor.setStrength(factor);
//
view.setScene(&scene);
view.resize(pixmap.size() / QWidget().devicePixelRatio());
view.setSceneRect(pixmap.rect());
scene.setSceneRect(pixmap.rect());
QGraphicsPixmapItem *p = view.scene()->addPixmap(pixmap);
p->setGraphicsEffect(&pColor);
view.setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
view.setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
return view.grab();
}
} // namespace Qv2ray::common

View File

@ -227,19 +227,17 @@ int main(int argc, char *argv[])
SingleApplication::setApplicationName("qv2ray_debug");
SingleApplication::setApplicationDisplayName("Qv2ray - " + QObject::tr("Debug version"));
#endif
if (!(qEnvironmentVariableIsSet("QT_DEVICE_PIXEL_RATIO") || qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR") || //
qEnvironmentVariableIsSet("QT_SCALE_FACTOR") || !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) || //
StartupOption.forceHiDPI)
{
LOG(MODULE_INIT, "High DPI scaling is enabled.")
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
}
else if (StartupOption.noScaleFactors)
if (StartupOption.noScaleFactors)
{
LOG(MODULE_INIT, "Force set QT_SCALE_FACTOR to 0.")
LOG(MODULE_UI, "Original QT_SCALE_FACTOR was: " + qEnvironmentVariable("QT_SCALE_FACTOR"))
qputenv("QT_SCALE_FACTOR", "1");
}
else
{
LOG(MODULE_INIT, "High DPI scaling is enabled.")
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
}
SingleApplication _qApp(argc, argv, false,
SingleApplication::User | SingleApplication::ExcludeAppPath | SingleApplication::ExcludeAppVersion);
_qApp.setQuitOnLastWindowClosed(false);
@ -319,7 +317,7 @@ int main(int argc, char *argv[])
if (Qv2rayTranslator->InstallTranslation(confObject.uiConfig.language))
{
LOG(MODULE_INIT, "Successfully installed a translator for " + confObject.uiConfig.language);
LOG(MODULE_INIT, "Successfully installed a translator for " + confObject.uiConfig.language)
}
else
{

View File

@ -84,7 +84,7 @@ void ConnectionInfoWidget::ShowDetails(const tuple<GroupId, ConnectionId> &_iden
//
QZXingEncoderConfig conf;
conf.border = true;
conf.imageSize = QSize(400, 400);
conf.imageSize = qrLabel->size() * devicePixelRatio();
conf.errorCorrectionLevel = QZXing::EncodeErrorCorrectionLevel_M;
QZXing qzx;
qrPixmap = QPixmap::fromImage(qzx.encodeData(shareLink, conf));