QPrintDialog отображается дважды в окнах

Я написал этот фрагмент кода, который берет содержимое QPlainTextEditor, а затем отправляет его объекту QPrint, когда пользователь принимает QPrintDialog.

void MainWindow::on_actionPrint_triggered()
{
    printPage = new QPrinter(QPrinter::HighResolution);
    QPrintDialog *printDialog = new QPrintDialog(printPage,this);
    printDialog->show();
    if(printDialog->exec() == QPrintDialog::Accepted){
        QPainter *painterToPrnt = new QPainter;
        painterToPrnt->begin(printPage);
        painterToPrnt->drawText(printPage->pageRect(),ui->plainTextEdit->toPlainText());
        painterToPrnt->end();
    }
}

он работает нормально в KDE (не пробовал это в Gnome), но в Windows, всякий раз, когда я принимаю printDialog, диалоговое окно будет отображаться снова, и если я снова приму это, он отправит текст на принтер.

как я могу это исправить?


person Nixmd    schedule 21.08.2013    source источник


Ответы (1)


Я думаю, что достаточно вызвать только exec(). Вы можете удалить вызов show().

person Exa    schedule 21.08.2013
comment
exec() внутренне вызывает show(), а затем блокируется в цикле обработки событий. - person RobbieE; 21.08.2013