58QAbstractPrintDialog::QAbstractPrintDialog(QPrinter *printer, QWidget *parent)
59 : QDialog(*(
new QAbstractPrintDialogPrivate), parent)
61 Q_D(QAbstractPrintDialog);
62 setWindowTitle(QCoreApplication::translate(
"QPrintDialog",
"Print"));
63 d->setPrinter(printer);
64 d->minPage = printer->fromPage();
65 int to = printer->toPage();
66 d->maxPage = to > 0 ? to : INT_MAX;
98void QPrintDialog::setOption(PrintDialogOption option,
bool on)
100 auto *d =
static_cast<QAbstractPrintDialogPrivate *>(d_ptr.data());
101 if (!(d->options & option) != !on)
102 setOptions(d->options ^ option);
203void QAbstractPrintDialog::setFromTo(
int from,
int to)
205 Q_D(QAbstractPrintDialog);
206 Q_ASSERT_X(from <= to,
"QAbstractPrintDialog::setFromTo",
207 "'from' must be less than or equal to 'to'");
208 d->printer->setFromTo(from, to);
210 if (d->minPage == 0 && d->maxPage == 0)
368void QPrintDialog::done(
int result)
370 auto *d =
static_cast<QAbstractPrintDialogPrivate *>(d_ptr.data());
371 if (result == Accepted) {
375 QObject::connect(
this, &QDialog::accepted,
this, [
this]{
376 emit accepted(printer());
377 }, Qt::SingleShotConnection);
379 QDialog::done(result);
380 if (d->receiverToDisconnectOnClose) {
381 disconnect(
this, SIGNAL(accepted(QPrinter*)),
382 d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
383 d->receiverToDisconnectOnClose =
nullptr;
385 d->memberToDisconnectOnClose.clear();
397void QPrintDialog::open(QObject *receiver,
const char *member)
399 auto *d =
static_cast<QAbstractPrintDialogPrivate *>(d_ptr.data());
400 connect(
this, SIGNAL(accepted(QPrinter*)), receiver, member);
401 d->receiverToDisconnectOnClose = receiver;
402 d->memberToDisconnectOnClose = member;