diff --git a/klines.cpp b/klines.cpp --- a/klines.cpp +++ b/klines.cpp @@ -43,6 +43,7 @@ KLinesMainWindow::KLinesMainWindow() { KLinesRenderer::Init(); + KLinesRenderer::setDevicePixelRatio(devicePixelRatioF()); mwidget = new MainWidget(this); setCentralWidget( mwidget ); diff --git a/main.cpp b/main.cpp --- a/main.cpp +++ b/main.cpp @@ -33,6 +33,7 @@ int main( int argc, char **argv ) { + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication app(argc, argv); Kdelibs4ConfigMigrator migrate(QStringLiteral("klines")); migrate.setConfigFiles(QStringList() << QStringLiteral("klinesrc")); diff --git a/renderer.h b/renderer.h --- a/renderer.h +++ b/renderer.h @@ -139,6 +139,16 @@ return 0; } } + + static qreal devicePixelRatio() + { + return m_devicePixelRatio; + } + static void setDevicePixelRatio(qreal dpr) + { + m_devicePixelRatio = dpr; + } + private: // disable copy - it's singleton KLinesRenderer(); @@ -170,6 +180,8 @@ static int m_selDuration; static int m_dieDuration; static int m_moveDuration; // one cell + + static qreal m_devicePixelRatio; }; #endif diff --git a/renderer.cpp b/renderer.cpp --- a/renderer.cpp +++ b/renderer.cpp @@ -59,6 +59,7 @@ int KLinesRenderer::m_selDuration(0); int KLinesRenderer::m_dieDuration(0); int KLinesRenderer::m_moveDuration(0); +qreal KLinesRenderer::m_devicePixelRatio(1.0); KLinesRenderer *g_KLinesRenderer = nullptr; @@ -168,7 +169,8 @@ QSize sz = customSize.isValid() ? customSize : cellExtent(); - QPixmap pix = m_renderer->spritePixmap(svgName, sz); + QPixmap pix = m_renderer->spritePixmap(svgName, sz * m_devicePixelRatio); + pix.setDevicePixelRatio(m_devicePixelRatio); return pix; }