大家好,我第一次接触Qt的打印功能,遇到了个比较郁闷的
问题,请大家帮帮忙,谢谢。
首先,我查了下Google,发现用QTextDocument+QTextBrowser可以print出东西。我是需要打印一份带CSS的HTML档,发现QTextBrowser不能支持所有的CSS格式,放弃了。
接着,我尝试使用QWebView打印,结果打不出来。打印机
显示文档名称:document1,状态:正在等待。就一直停着不动了。后来加了QPrintPreviewDialog,在预览
窗口也能看得到东西,但就是打印不出来,疯了。
贴出代码:
- SomeDialog::SomeDialog()
- {
- ......
- mWebView = new QWebView(this);
- connect(mWebView, SIGNAL(loadFinished(bool)), this, SLOT(webLoadFinished(bool)));
- }
- void SomeDialog::clickPrint(void)
- {
- QString strHtml = "...some_html_with_css...";
- mWebView->setHtml(strHtml);
- }
- void SomeDialog::webLoadFinished(bool _succ)
- {
- if (mWebView == NULL || !_succ)
- return;
- QPrinter* pPrinter = new QPrinter(QPrinter::ScreenResolution);
- QPrintPreviewDialog* pPreviewDlg = new QPrintPreviewDialog(pPrinter, this);
- connect(pPreviewDlg, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*)));
- if (pPreviewDlg->exec() == QDialog::Accepted)
- mWebView->print(pPrinter);
- delete pPreviewDlg;
- delete pPrinter;
- }
- void SomeDialog::printPreview(QPrinter* _printer)
- {
- mWebView->print(_printer);
- }
本地环境:i7-2630QM 4G GT555M Windows 7 x86 Qt_4.7.2