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)
366void QPrintDialog::done(
int result)
368 auto *d =
static_cast<QAbstractPrintDialogPrivate *>(d_ptr.data());
369 if (result == Accepted) {
373 QObject::connect(
this, &QDialog::accepted,
this, [
this]{
374 emit accepted(printer());
375 }, Qt::SingleShotConnection);
377 QDialog::done(result);
378 if (d->receiverToDisconnectOnClose) {
379 disconnect(
this, SIGNAL(accepted(QPrinter*)),
380 d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
381 d->receiverToDisconnectOnClose =
nullptr;
383 d->memberToDisconnectOnClose.clear();
395void QPrintDialog::open(QObject *receiver,
const char *member)
397 auto *d =
static_cast<QAbstractPrintDialogPrivate *>(d_ptr.data());
398 connect(
this, SIGNAL(accepted(QPrinter*)), receiver, member);
399 d->receiverToDisconnectOnClose = receiver;
400 d->memberToDisconnectOnClose = member;