【发布时间】:2013-09-16 03:05:20
【问题描述】:
当我单击按钮时,程序崩溃。我将发布我的代码:
void Test1::on_pushButton_1_clicked() // print the information
{
QPrinter printer(QPrinter::HighResolution);
printer.setCreator("Me");
printer.setDocName("Print");
printer.setPaperSize(QPrinter::A4);
QPrintPreviewDialog *pd = new QPrintPreviewDialog(&printer);
connect(pd,SIGNAL(paintRequested(QPrinter*)),this,SLOT(print(QPrinter*)));
pd->exec();
}
void Test1::print(QPrinter *p)
{
QPainter painter(p);
painter.setPen(Qt::blue);
painter.setRenderHints(QPainter::Antialiasing |
QPainter::TextAntialiasing |
QPainter::SmoothPixmapTransform, true);
painter.drawText(100, 100, "Name: ");
painter.drawText(300, 100, "SuperMan");
}
请告诉我我的错误在哪里。 提前致谢。
【问题讨论】:
-
“QPrintPreviewDialog *pd = new QPrintPreviewDialog(&printer);”在哪里位于您的代码中?
-
我们可以看到它在 button_clicked 函数中声明。你到底是什么意思?我对指针还不是很好。 QPrintPreviewDialog *pd = new QPrintPreviewDialog(&printer);只有在那里,你看到它。我没有在其他任何地方使用过它
-
在你的代码中看起来好像它在外面
-
您可以按原样粘贴整个代码吗?另外,能否请您发送回溯?您使用的是哪个操作系统,哪个 Qt 版本等?
-
这是整个代码,其他都是代理模型,列表模型。我的主要目标是从 TableView 单元格中获取价值。我得到了这个值,然后我把它放在了 drawText 函数中。当我按下按钮时,我的 PrintPreview 出现了,没有问题,但是当我单击其中的打印按钮时,我的程序崩溃了。正如您在 drawText 中的帖子代码中看到的那样,我使用了一些现成的字符串“SuperMan”,程序再次崩溃。我想,这可能是问题所在。但不是。您在帖子中看到的没有更多关于此的内容。这就是一切。再次感谢