我正在尝试使用QPrinterDialog打印pdf文件,并禁用对话框中的“打印到文件”选项。
有一些方法可以启用/禁用此选项,但不要取消选中它。 是否可以使用qt framework实用地取消选中此选项?
答案 0 :(得分:0)
似乎只有在连接了打印机的情况下才会出现“打印到文件”选项,但此刻我没有,因此未测试我的解决方案。
一种可能的解决方案是使用文本名称过滤窗口的子级以获得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"))