【问题标题】:How to print text in Qt when a button is clicked单击按钮时如何在Qt中打印文本
【发布时间】:2013-10-02 01:26:04
【问题描述】:

我一直在阅读 QPrinter 和 QPrintDialog 的 Qt 文档,但我不知道如何在 textEdit 字段中打印内容。

这是我一直在尝试的代码,当然这是行不通的。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QPainter>


void MainWindow::on_pushButton_clicked()
{
    QString textFromField = ui->textEdit->toPlainText();

    QPrinter printer;

    QPrintDialog *printDialog = new QPrintDialog(&printer, this);

    printDialog->setWindowTitle("Print Document");

    if(printDialog->exec() != QDialog::Accepted)
    {

    }

    QPainter painter;
    painter.begin(&printer);
    painter.drawText(100, 100, 500, 500,Qt::AlignLeft | Qt::AlignTop, textFromField);
    painter.end();
}

这是我运行它时得到的输出。

:-1: 警告:找不到选项的目录 '-F/Applications/Qt5.1.0//5.1.0/clang_64/qtbase/lib' :-1: 错误: 未找到架构 x86_64 的符号

知道我做错了什么吗?同样,我只想在 textEdit 字段中打印内容。

【问题讨论】:

标签: c++ qt qpainter qprinter


【解决方案1】:

QTextEdit 只是 QTextDocument 的编辑器,它是一个知道如何打印其内容的强大类。

QTextDocument *doc = ui->textEdit->document();
doc->print(&printer);

【讨论】:

  • 我尝试了您的建议,但我可能做错了什么,因为我遇到了错误。 void MainWindow::on_pushButton_Print_clicked() { QPrinter printer; QTextDocument *doc = ui-&gt;textEdit-&gt;document(); doc-&gt;print(&amp;printer); } 错误 C:\Users....\build-Printing-Desktop_Qt_5_1_0_MinGW_32bit-Debug\debug\mainwindo‌​w.o:-1: 在函数 ZN10MainWindow27on_pushButton_Print_clickedEv': 错误 C:\Users\...\Printing\mainwindow.cpp:20: 错误:未定义引用 _imp___ZN8QPrinterC1ENS_11PrinterModeE'
  • 所有以“Undefined reference to ...”开头的错误都是链接器错误。这意味着您的代码已正确编译,但在最后的链接阶段出现了问题。检查您要链接的库是否使用您正在使用的相同编译器进行编译,并且 Qt 版本是否兼容。
  • 我必须将QT += printsupport 添加到项目文件中,它编译时没有任何错误,但是现在当我单击按钮时,我得到以下输出 QPainter::begin(): Returned false 知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 2017-11-05
  • 2020-12-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
相关资源
最近更新 更多