是否可以从 QPrintDialog 调用的 QPrinter 对话框中取消选中“打印到文件”?
Posted
技术标签:
【中文标题】是否可以从 QPrintDialog 调用的 QPrinter 对话框中取消选中“打印到文件”?【英文标题】:Is it possible to uncheck “Print to File” from QPrinter dialog called from QPrintDialog? 【发布时间】:2019-12-11 18:49:32 【问题描述】:我正在尝试使用 QPrinterDialog 打印 pdf 文件,并禁用对话框中的“打印到文件”选项。
有一些方法可以启用/禁用此选项,但不能取消选中它。 是否可以使用 qt 框架务实地取消选中此选项?
【问题讨论】:
【参考方案1】:似乎“打印到文件”选项只有在您连接了打印机但目前我没有它时才会出现,因此我的解决方案没有经过测试。
一种可能的解决方案是过滤带有文本名称的窗口的子项以获得QCheckBox:
from PySide2 import QtCore, QtGui, QtWidgets, QtPrintSupport
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
printer = QtPrintSupport.QPrinter()
dialog = QtPrintSupport.QPrintDialog(printer)
def on_timeout():
for checkbox in dialog.findChildren(QtWidgets.QCheckBox):
print(
"objectName: , text: ".format(
checkbox.objectName(), checkbox.text()
)
)
if checkbox.text() == "Print to file":
checkbox.setCheckState(QtCore.Qt.Unchecked)
QtCore.QTimer.singleShot(0, on_timeout)
if dialog.exec_() == QtWidgets.QDialog.Accepted:
painter = QtGui.QPainter(printer)
painter.fillRect(printer.pageRect(), QtGui.QColor("salmon"))
【讨论】:
以上是关于是否可以从 QPrintDialog 调用的 QPrinter 对话框中取消选中“打印到文件”?的主要内容,如果未能解决你的问题,请参考以下文章
Qt学习:VS中使用Qt出现的常见问题:QDebug和QPrintDialog的使用.
仅依赖于 NumPy/SciPy 的二次规划 (QP) 求解器?