qt5 怎么实现打印功能

日晞Pisces 2014-02-25 10:12:44
环境win7 64位操作系统;vs 2012;qt5.2.0;我在项目工程中添加了Qt5PrintSupport.lib,也包含了打印功能的头文件
详细的配置信息是:
/OUT:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\\MainWindow.exe" /MANIFEST /NXCOMPAT /PDB:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pdb" /DYNAMICBASE "qtmaind.lib" "Qt5Cored.lib" "Qt5Guid.lib" "Qt5Widgetsd.lib" "Qt5PrintSupport.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /PGD:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\MainWindow.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:\Qt\Qt5.2.0\5.2.0\msvc2012_64\lib" /TLBID:1

我实现打印图片的功能,但是一到初始化QPrinter程序就直接退出vs提示“QPrinter: Must construct a QCoreApplication before a QPrinter”, 我创建的是QT mainmennu GUI,QCoreApplication使用在非GUI图像上额。。。我创建的是GUI程序啊。新手,求各位大神指导~
下面是代码部分
QPrinter printer(QPrinter::HighResolution);
qDebug()<<"printer construct is"<<int(&printer);
QPrintDialog *dlg = new QPrintDialog(&printer, this);
QString title = "print-"+curFileName;

qDebug()<<"print file name is"<<title;

dlg->setWindowTitle(title);

if (dlg->exec() == QDialog::Accepted)
{。。}
...全文
1017 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ranxufeng 2014-09-10
  • 打赏
  • 举报
回复
楼主 实现了吗?
日晞Pisces 2014-02-25
  • 打赏
  • 举报
回复
QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); //MainWindow就是我创建的mainmenuGUI,MainWindow是多文档的,可以对一个文档进行打印 printAction 与一个槽链接printImgFile(),printImgFile函数里面再次调用单个文档的打印功能。 printImgFile() { imgForm *child = dynamic_cast<imgForm*>(mdiArea->focusWidget()); if (child == NULL) return; else child->printImg(); } printImg()是调用我上面的代码
luoliba007 2014-02-25
  • 打赏
  • 举报
回复
主函数里要创建QApplication对象才能用QPainter 例如:QApplication app(argc ,argv);
日晞Pisces 2014-02-25
  • 打赏
  • 举报
回复
我那获取当前激活的文档那段代码有问题,正确的下面的写法(奇怪了,我上面的代码有时候就可以用,有时就不行) QMdiSubWindow *activeWin = mdiArea->activeSubWindow()) imgForm *cureentDoc = qobject_cast<imgForm*> (activeWin->widget()); /////////////////////
引用 3 楼 turingo 的回复:
直接从官方去寻找答案,http://qt-project.org/doc/qt-5/qtexamplesandtutorials.html [quote=引用 楼主 qianmeiling2848 的回复:] 环境win7 64位操作系统;vs 2012;qt5.2.0;我在项目工程中添加了Qt5PrintSupport.lib,也包含了打印功能的头文件 详细的配置信息是: /OUT:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\\MainWindow.exe" /MANIFEST /NXCOMPAT /PDB:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pdb" /DYNAMICBASE "qtmaind.lib" "Qt5Cored.lib" "Qt5Guid.lib" "Qt5Widgetsd.lib" "Qt5PrintSupport.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /PGD:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\MainWindow.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:\Qt\Qt5.2.0\5.2.0\msvc2012_64\lib" /TLBID:1 我实现打印图片的功能,但是一到初始化QPrinter程序就直接退出vs提示“QPrinter: Must construct a QCoreApplication before a QPrinter”, 我创建的是QT mainmennu GUI,QCoreApplication使用在非GUI图像上额。。。我创建的是GUI程序啊。新手,求各位大神指导~ 下面是代码部分 QPrinter printer(QPrinter::HighResolution); qDebug()<<"printer construct is"<<int(&printer); QPrintDialog *dlg = new QPrintDialog(&printer, this); QString title = "print-"+curFileName; qDebug()<<"print file name is"<<title; dlg->setWindowTitle(title); if (dlg->exec() == QDialog::Accepted) {。。}
[/quote]
日晞Pisces 2014-02-25
  • 打赏
  • 举报
回复
真正的问题是我没有安装打印驱动,在做打印功能的时候,确保自己的电脑可以连接打印机并且可以打印。 对于跨平台的修改makefile文件就可以了。对于windows的平台的只需要在 qt5(菜单栏)->Qt Project Settings->Qt Modules(选项卡) 中的Print Support复选框勾选就可以了,这样模块就添加进去了。 qt5打印功能用起来还是很方便的。但是,出来的打印图片太小,还不知道怎解决
图灵狗 2014-02-25
  • 打赏
  • 举报
回复
直接从官方去寻找答案,http://qt-project.org/doc/qt-5/qtexamplesandtutorials.html
引用 楼主 qianmeiling2848 的回复:
环境win7 64位操作系统;vs 2012;qt5.2.0;我在项目工程中添加了Qt5PrintSupport.lib,也包含了打印功能的头文件 详细的配置信息是: /OUT:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\\MainWindow.exe" /MANIFEST /NXCOMPAT /PDB:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pdb" /DYNAMICBASE "qtmaind.lib" "Qt5Cored.lib" "Qt5Guid.lib" "Qt5Widgetsd.lib" "Qt5PrintSupport.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /PGD:"C:\Users\Program\Documents\Visual Studio 2012\Projects\MainWindow\x64\Debug\MainWindow.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\MainWindow.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:\Qt\Qt5.2.0\5.2.0\msvc2012_64\lib" /TLBID:1 我实现打印图片的功能,但是一到初始化QPrinter程序就直接退出vs提示“QPrinter: Must construct a QCoreApplication before a QPrinter”, 我创建的是QT mainmennu GUI,QCoreApplication使用在非GUI图像上额。。。我创建的是GUI程序啊。新手,求各位大神指导~ 下面是代码部分 QPrinter printer(QPrinter::HighResolution); qDebug()<<"printer construct is"<<int(&printer); QPrintDialog *dlg = new QPrintDialog(&printer, this); QString title = "print-"+curFileName; qDebug()<<"print file name is"<<title; dlg->setWindowTitle(title); if (dlg->exec() == QDialog::Accepted) {。。}

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧