Qt42 文本打印QPrintDialog + QPrinter + QTextDocument 与光标定位 textCursor()

在这里插入图片描述

QTextDocument * QPlainTextEdit::document () const

在这里插入图片描述
在这里插入图片描述
在前面Qt 21 中有学到,打印对话框QPrintDialog类:

打印对话框QPrintDialog类
Qt中提供了预定义的打印对话框 QPrintDialog类,用于设置打印相关的参数信息

打印对话框使用方式

//构造打印对话框对象
QPrintDialog dlg(this);

//设置打印对话框的相关属性
dlg.setWindowTitle("Print Dialog");//标题

if( dlg.exec() == QPrintDialog::Accepted )
    {
        QPrinter* p = dlg.printer();
    }

Qt中的QPrinter 类是打印设备及其参数的封装
QPrinter类封装了系统中打印设备的驱动接口
QPrinter以相同方式使用系统中的不同打印设备

使用:

    //打印对话框对象
QPrintDialog dlg(this);

dlg.setWindowTitle("Print");

//显示打印对话框
if( dlg.exec() == QPrintDialog::Accepted )
{
    //Qt中的QPrinter 类是打印设备及其参数的封装
    //获取打印对象,通过打印对话框获取获取打印对象
    QPrinter* p = dlg.printer();
    //mainEditor.document()获取内部文档对象,调用print(p) 打印到打印对象
    //QTextDocument * QPlainTextEdit::document () const
    mainEditor.document()->print(p);
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用:

//获取光标所在字符位置
    int pos = mainEditor.textCursor().position();
    //获取文本框中字符串
    QString text = mainEditor.toPlainText();
    int col = 0;//列
    int ln = 0;//行
    int flag = -1;

    for(int i=0; i<pos; i++)
    {
        if( text[i] == '\n' )
        {
            ln++;//行
            flag = i;
        }
    }

    flag++;

    //列
    col = pos - flag;

    //状态栏标签显示行和列  QString::number 是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型
    statusLbl.setText("Ln: " + QString::number(ln + 1) + "    Col: " + QString::number(col + 1));

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中,您可以使用QPrinter和QPrintDialog类来设置打印机从一份PDF的某一页开始打印。下面是一个示例: ```cpp QPrinter printer(QPrinter::HighResolution); printer.setPrinterName("printer_name"); QPrintDialog printDialog(&printer, this); if (printDialog.exec() == QDialog::Accepted) { // 获取要打印的页码范围 int startPage = 2; int endPage = 4; // 设置要打印的页码范围 QString pageRange = QString("%1-%2").arg(startPage).arg(endPage); printer.setPrintRange(QPrinter::PageRange); printer.setPrintRange(pageRange); // 打印PDF文件 QPdfDocument pdfDoc("file.pdf"); QPainter painter(&printer); for (int i = startPage - 1; i < endPage; ++i) { pdfDoc.setPage(i); painter.drawPixmap(0, 0, pdfDoc.page().renderToPixmap()); if (i != endPage - 1) { printer.newPage(); } } } ``` 在这个示例中,我们首先创建一个QPrinter对象,并设置要使用的打印机的名称。然后,我们弹出一个QPrintDialog对话框,让用户选择打印机和其他打印选项。如果用户点击了“打印”按钮,则我们获取要打印的页码范围,并使用QPrinter::setPrintRange()方法设置要打印的页码范围。 接下来,我们打开要打印的PDF文件,并使用QPdfDocument和QPainter类来绘制每一页。在绘制每一页之前,我们使用QPdfDocument::setPage()方法将当前页面设置为正确的页面。然后,我们使用QPainter::drawPixmap()方法将PDF页面绘制到QPrinter上。 请注意,这种设置可能会因打印机和PDF文件的不同而有所不同,具体取决于您使用的打印机和PDF文件的格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值