【问题标题】:PrintPreviewDialog issue on 4K monitor4K 显示器上的 PrintPreviewDialog 问题
【发布时间】:2021-05-20 20:09:47
【问题描述】:

我在我的程序中添加了打印预览功能。问题是,它无法在 1920 x 1080 以上的屏幕分辨率上很好地显示预览文档。

示例:

代码:

QFont docFont;
docFont.setPointSize(14);
QTextDocument *textDoc = new QTextDocument(this);
textDoc->setDefaultFont(docFont);
textDoc->setPlainText(getHardwareData());

在调试过程中我发现了以下问题:

QWindowsMultiFontEngine::loadEngine: CreateFontFromLOGFONT failed for "Courier": error 0x88985002 : Indicates the specified font does not exist.
QWindowsMultiFontEngine::loadEngine: CreateFontFromLOGFONT failed for "Courier": error 0x88985002 : Indicates the specified font does not exist.

是否有任何提示/字体使它在所有屏幕分辨率上看起来都很好?

已编辑: 我已经修复了QWindowsMultiFontEngine::loadEngine: CreateFontFromLOGFONT failed for "Courier" 问题。该问题是由外围数据中的 Unicode 字符引起的。现在,唯一剩下的就是让它在4K 上看起来更好。

【问题讨论】:

    标签: c++ windows qt


    【解决方案1】:

    我发现了一些从打印预览对话框中获取工具栏操作的技巧。通过添加一些额外的逻辑,它解决了这个问题。

        QList<QToolBar*> toolbarList = printPreviewDlg->findChildren<QToolBar*>();
    
        if (!toolbarList.isEmpty()) {
            if (screenSize.width() > 1920 && screenSize.height() > 1080) {
                toolbarList.first()->actions().at(0)->activate(QAction::Trigger);
            } else {
                toolbarList.first()->actions().at(1)->activate(QAction::Trigger);
            }
        }
    

    为了检测屏幕尺寸,我使用了原生的Win API 方法。现在,它会自动触发Fit to width 工具栏选项并在4K 监视器上设置更好的预览。它的工作原理取决于屏幕尺寸。问题已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多