【问题标题】:How to solve QT QPrintDialog printer initialisation error?如何解决 QT QPrintDialog 打印机初始化错误?
【发布时间】:2017-08-12 10:34:49
【问题描述】:

我已经尝试解决 Qt 打印问题 2 天,但运气不佳。我有一个非常简单的程序,它应该从 QTextEdit 打印文本。我有基于 Qt 5.8.0(MSVC 2015,32 位)的 Qt Creator 4.3.0,在 Windows 7 64 位上运行。

我在项目文件中添加了打印支持,

QT       += core gui sql printsupport

我在头文件中添加了引用,

#include <QWidget>
#include <QPrinter>
#include <QPrintDialog>
#include <QPrinterInfo>
#include <QDialog>
#include <QFile>
#include <QMessageBox>
#include <QTextStream>

最后,我在 c++ 文件中添加了按钮 click() 插槽。

void MyClass::on_btnPrint_clicked()
{
  QPrinter printer;
  QPrintDialog printDialog(&printer, this);
  if (printDialog.exec() == QDialog::Accepted) {
       ui->textEdit->print(&printer);
  }
}

当我在调试模式下单击打印按钮时,出现以下错误,

QWin32PrintEngine::initialize: CreateDC failed ()

Windows 7 中出现以下对话框:

我的计算机上已经安装了默认打印机。 我搜索了 QT 支持,但找不到解决方案。这也没有被报告为错误。非常感谢您的帮助。

【问题讨论】:

    标签: c++ qt printing


    【解决方案1】:

    我正在回答我自己的问题,因为我找不到解决方案。最后,经过4天的努力,我解决了这个问题。我只是重新安装了QT,问题就消失了。现在 QT 正在与 Windows(QWin32PrintEngine)通信。我不必更改我的代码。我仍然不清楚最初为什么会出现这个问题,以及我如何才能避免它。

    【讨论】:

      【解决方案2】:

      检查您的应用程序是否加载了“printsupport\windowsprintersupport.dll”插件。如果此插件丢失,QPrintDialog::exec 将立即返回。

      【讨论】:

      • 谢谢。重新安装QT后问题已解决。
      猜你喜欢
      • 1970-01-01
      • 2017-08-26
      • 2016-01-11
      • 1970-01-01
      • 2018-05-18
      • 2017-10-04
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多