首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPainter::begin():返回false

QPainter::begin():返回false
EN

Stack Overflow用户
提问于 2020-12-21 16:50:38
回答 1查看 3K关注 0票数 0

所以我使用的是QT5.15.2,我在这里要做的是将QTableView的内容打印到PDF文件中,这是我的代码

代码语言:javascript
复制
 void ManageTeachers::on_print_clicked() {

    QPdfWriter pdf("C:");
    QPainter painter(&pdf);

        int i = 4000;
            painter.setPen(Qt::blue);
            painter.setFont(QFont("Arial", 30));
            painter.drawText(1100,1200,"List of teachers");
            painter.setPen(Qt::black);
            painter.setFont(QFont("Arial", 15));
           
            painter.drawRect(100,100,7300,2600);
            painter.drawRect(0,3000,9600,500);
            painter.setFont(QFont("Arial", 9));
            painter.drawText(200,3300,"CIN");
            painter.drawText(1300,3300,"First name");
            painter.drawText(2100,3300,"last name");
            painter.drawText(3200,3300,"phone");
            painter.drawText(5300,3300,"email");

            painter.drawText(5300,3300,"salary");
            QSqlQuery query;
            query.prepare("select * from teacher");
            query.exec();
            while (query.next())
            {
                painter.drawText(200,i,query.value(0).toString());
                painter.drawText(1300,i,query.value(1).toString());
                painter.drawText(2200,i,query.value(2).toString());
                painter.drawText(3200,i,query.value(3).toString());
                painter.drawText(4500,i,query.value(4).toString());
               i = i + 500;
            }
            int reponse = QMessageBox::question(this, "Génerer PDF", "<PDF Enregistré>...Vous Voulez Affichez Le PDF ?", QMessageBox::Yes |  QMessageBox::No);
                if (reponse == QMessageBox::Yes)
                {

                    painter.end();
                }
                if (reponse == QMessageBox::No)
                {
                     painter.end();
                } }

问题是,在控制台中,我得到了这些错误

代码语言:javascript
复制
QPainter::begin(): Returned false
QPainter::setPen: Painter not active
QPainter::setFont: Painter not active
QPainter::setPen: Painter not active
QPainter::setFont: Painter not active
QPainter::drawRects: Painter not active
QPainter::drawRects: Painter not active
QPainter::setFont: Painter not active
QPainter::end: Painter not active, aborted

有什么帮助吗?我添加了QT+=打印支持多媒体

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-22 18:27:08

代码语言:javascript
复制
QPdfWriter pdf("C:");
QPainter painter(&pdf);

这很可疑。如果您查阅文档 for QPdfWriter,它会注意到第一个参数应该是一个文件名。"C:“不是文件名。您需要传递要写入的文件的名称,如下所示:

代码语言:javascript
复制
QString filename("C:/my_file.pdf");
QPdfWriter pdf(filename);
QPainter painter(&pdf);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65396767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档