• 5841阅读
  • 2回复

关于Qt打印的问题  求人一起讨论 [复制链接]

上一主题 下一主题
离线princeholy
 
只看楼主 倒序阅读 楼主  发表于: 2012-01-11
目的:自定义一个按钮,打开网页后,通过打印预览,实现网页页面的打印。

测试:1:load  www.baidu.com会出现百度重影问题,如图所示:并且打印出来的是一张白纸 只有 百度对话框的一个矩形框 没有文字 。。。。。有问题 不知道为什么




2:load  www.qq.com预览只有网页的一小部分 如图,打印同样存在问题,我把代码贴出来 大家帮我看看吧 ,谢谢各位了  这个做完就能放假回家了,希望大家指点指点  或者加QQ讨论 113132715




代码如下:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));


    ui->setupUi(this);
    this->showMaximized();
    view = new QWebView(this);
    view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
    view->settings()->setAttribute(QWebSettings::JavaEnabled, true);
    view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
    view->settings()->setAttribute(QWebSettings::AutoLoadImages, true);
    view->settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain, true);
    view->load(QUrl("http://www.baidu.com"));
    view->show();
    setCentralWidget(view);
    QPushButton *printButton = new QPushButton(tr("打印预览"),this);
    printButton->setGeometry(100,100,100,60);
    printButton->show();


    connect(printButton,SIGNAL(clicked()),this,SLOT(doPrint()));
}


MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::doPrint()
{
    QPrinter *printer = new QPrinter();
    printer->setPageSize(QPrinter::A4);
    printer->setOrientation(QPrinter::Portrait);


    QPrintPreviewDialog preview(printer,view);
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),this,SLOT(printPreview(QPrinter *)));
    preview.exec();
}


void MainWindow::printPreview(QPrinter *printer)
{
    view->print(printer);
}
离线hats

只看该作者 1楼 发表于: 2012-01-13
同求解答
VC2005 + Qt 4.7.0
VC6 + Qt 4.5.0
WIndows XP
Mac OS X 10.6.8
CentOS6.2
离线moxien
只看该作者 2楼 发表于: 2012-01-14
这是一个bug,除非自己修复吧,可以参考一下chrome的代码。
简单的办法是在html代码中用span标签将中文与英文分开,我目前是这样做了,因为打印内容是我可以控制得到的。
快速回复
限100 字节
 
上一个 下一个