是否可以从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除 "Write to PDF"?
Is it possible to remove "Write to PDF" from QPrinter dialog called from QPrintPreviewDialog?
当从 QPrintPreviewDialog 打印文档时,我不想从调用的 QPrinter 设置对话框中的打印机列表中删除 Linux、"Write to PDF"。可以吗?
我尝试用我自己的按钮和操作替换 QPrintPreviewDialog 中的打印图标,但 Qt 仍然显示标准 QPrinter 对话框,我不知道如何从该对话框的打印机列表中删除 "Write to PDF"。
简短回答:不,无法更改默认打印对话框中的打印机列表。
解决方法:如果用户选择 "Print to file" 选项,则不要打印任何内容(并且可能会告诉他们他们不会从您的应用中获得 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 SO 问题的答案中关于该主题的更多(也许是鼓舞人心的)想法。
当从 QPrintPreviewDialog 打印文档时,我不想从调用的 QPrinter 设置对话框中的打印机列表中删除 Linux、"Write to PDF"。可以吗?
我尝试用我自己的按钮和操作替换 QPrintPreviewDialog 中的打印图标,但 Qt 仍然显示标准 QPrinter 对话框,我不知道如何从该对话框的打印机列表中删除 "Write to PDF"。
简短回答:不,无法更改默认打印对话框中的打印机列表。
解决方法:如果用户选择 "Print to file" 选项,则不要打印任何内容(并且可能会告诉他们他们不会从您的应用中获得 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 SO 问题的答案中关于该主题的更多(也许是鼓舞人心的)想法。