我在Windows 7上使用Qt 4.8.4版。我沒有條件在另一個平臺上測試此問題,例如Mac,Linux ...並使用以下代碼預覽內容當使用QPrintPreviewDialog時,內容不會顯示預覽
void DemoClass::on_btnOK_clicked()
{
QPrinter printer;
printer.setResolution(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setFullPage(true);
QPrintPreviewDialog *printPreview = new QPrintPreviewDialog(&printer);
connect(printPreview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(print(QPrinter*)));
printPreview->setWindowTitle("Preview Dialog");
Qt::WindowFlags flags(Qt::WindowTitleHint);
printPreview->setWindowFlags(flags);
printPreview->exec();
}
void DemoClass::print(QPrinter *printer)
{
QPainter painter(printer);
painter.setRenderHints(QPainter::Antialiasing |
QPainter::TextAntialiasing |
QPainter::SmoothPixmapTransform, true);
painter.drawText(100, 100, "Hello World! 123");
}
在按下OK按鈕,會出現該對話框:
正如你看到的,頁面是空白。該頁面不包含任何內容。然後我點擊預覽對話框中的頁面設置按鈕,這似乎:
...不改變任何東西,我點擊確定,然後在預覽成爲正確:
我真的不明白原因是什麼。如何在不更改頁面設置的情況下正確顯示內容?
你有什麼解決方案嗎?
P/S:我已閱讀this post這是我的問題類似。作者建議使用QPageSetupDialog
對象,我嘗試了不同的方法。但我仍然沒有解決問題,因爲我是Qt的新手。
它可能是因爲你不使用「painter.end()」,當你來到頁面設置painter.end可能會被調用。 –