1

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

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

4

1 回答 1

0

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

解决方法:如果用户选择“打印到文件”选项,请不要打印任何内容(并且可能告诉他们他们不会从您的应用中获得 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
    }
}

在这个SO question的答案中,关于这个主题的更多(也许是鼓舞人心的)想法。

于 2019-09-09T12:21:47.107 回答