c++ - 是否可以从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除 "Write to PDF"?

标签 c++ linux qt pdf qprinter

当从 QPrintPreviewDialog 打印文档时,我不想在 Linux 下从调用的 QPrinter 设置对话框中的打印机列表中删除“写入 PDF”。可以吗?

我已经尝试用我自己的按钮和操作替换 QPrintPreviewDialog 中的打印图标,但 Qt 仍然显示标准的 QPrinter 对话框,我不知道如何从该对话框的打印机列表中删除“写入 PDF”。

最佳答案

简短回答:不,无法更改默认打印对话框中的打印机列表。

解决方法:如果用户选择“打印到文件”选项,则不要打印任何内容(并且可能会告诉他们他们不会从您的应用中获得 PDF)。

您可以这样做:将 QPrintPreviewDialog::paintRequested 信号连接到这样的插槽:

void Widget::onPaintRequested(QPrinter *printer)
{
    QVariant printername = printer->printEngine()->property(QPrintEngine::PPK_PrinterName);
    if(printername.toString().isEmpty())
    {
        QMessageBox::information(this, "Print issue", "Print to file is not available for weird unknown reasons ...");
    }
    else
    {
        //supply the requested paint code
    }
}

关于 this 的回答中关于该主题的更多(也许是鼓舞人心的)想法所以问题。

关于c++ - 是否可以从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除 "Write to PDF"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850957/

相关文章:

c++ - 单击按钮时如何使 linedit 准备好输入

linux - 使用 Qt Creator 绘制 csv 文件图表

c++ - 将基类模板的 `this` 类型转换为其派生类

c++ - C++中类的常量

c++ - std::ostringstream 的问题

linux - 尽早阅读/dev/urandom

c++ - 本地对象是否保证比临时参数长寿? (C++11)

c++ - 在 C++ 中计算字符串的 MD5

linux - Iptables 通过 VPN 转发

c++ - 为什么客户端无法连接到服务器? Qt