• 4856阅读
  • 8回复

请教一个QPrinter的问题 [复制链接]

上一主题 下一主题
离线myue_23
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-31
void CRecordManager::doPrint()
{
    QTextDocument *document = textEdit->document();
    QPrinter printer;

    QPrintDialog dlg(&printer, this);
    dlg.setWindowTitle(tr("打印文档"));
    if (dlg.exec() != QDialog::Accepted)
        return;

    document->print(&printer);
}这是打印单个QTextEdit的代码,我现在的需求是:要打印的页面上有QLintEdit、QComboBox和图片等,请问如何写代码,把它们都打印出来?

就按图的样式打印
[ 此帖被myue_23在2009-09-02 14:49重新编辑 ]
离线myue_23
只看该作者 1楼 发表于: 2009-08-31
谁能帮忙解答一下 db呢?
离线myue_23
只看该作者 2楼 发表于: 2009-09-02
up up
离线shiroki

只看该作者 3楼 发表于: 2009-09-02
把QPrinter看成和QWidget一样的paintdevice, 可以用QPainter p(&printer);
然后调用控件上一级widget的
widget->render(&p);
可以把widget的内容(包括子控件)都画到printer里。正常这样就应该会打印你需要的内容了
参考
http://qt.nokia.com/doc/4.5/printing.html
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线myue_23
只看该作者 4楼 发表于: 2009-09-02
谢谢 楼上的class CRecordManager :public QMainWindow,public Ui::RecordManagervoid
CRecordManager::doPrint()
{
        QPrinter printer;
        QPrintDialog dlg(&printer, this);
        dlg.setWindowTitle(tr("打印文档"));
        if (dlg.exec())
        {
                QPainter painter(&printer);
                painter.setRenderHint(QPainter::Antialiasing);
                render(&painter);
        }

}
按照这样的代码确实把所有控件包括菜单和工具栏也都能原样打印。
现在我不要打印菜单和工具栏该怎么办呢?
另外,从“姓名”到“13”我都想按照他们原来的位置打印
效果比如说:
姓名:___张三___         1:__***____            2:__****___            3:__***___
4:____***________    5:___***_____   ......以下省略,有个下划线,请问这样的效果如何实现呢?谢谢
离线dbzhang800

只看该作者 5楼 发表于: 2009-09-02
终于看懂楼主是要做一个报表一样的东西了。感觉上楼主先要生成一个这样的报表,然后再打印才行。不然不存在的东西怎么打印呢?
离线myue_23
只看该作者 6楼 发表于: 2009-09-03
恩 请问如何生成这样的报表呢
离线rqzrqh

只看该作者 7楼 发表于: 2009-09-05
楼上这人真讨厌
离线lhyasia
只看该作者 8楼 发表于: 2009-09-10
楼上这人真讨厌
-------------------------
是啊, 再有耐心的人也要闪了。
快速回复
限100 字节
 
上一个 下一个