繁体   English   中英

发布的应用程序不能像原始应用程序那样工作

[英]Released app does not work as the original

我有一个包含成百上千张图片(照片)的文件,我需要在预览中向某些人展示。 这个预览应该是一个采购订单(快速,没有“专业”),我会给他们,以便人们可以在他们想要一张图片和大小(就像那个简单)的情况下交叉。

我尝试自动生成采购订单,PDF上每页有两个(A4)。

我使用Qt / C ++和三个对象:

QPdfWriter
QPainter的
而QImage

这是pdf生成类的开头:

int order = 1;
qDebug() << "pdf creation";

QString logoName = QFileDialog::getOpenFileName(0, "Sélectionner le logo", QString(), "Images (*.png *.bmp *.jpg)");

QString fileName = QFileDialog::getSaveFileName(0, "Export PDF",
                                                QString(), "*.pdf");

QString dir = QFileDialog::getExistingDirectory(0, "Sélectionner le dossier de photos");

QFont titleFont("Arial", 24);
titleFont.setUnderline(true);

QFont textFont("Times new roman", 12);

QDirIterator it(dir);

if (!fileName.isEmpty()) {
    if (QFileInfo(fileName).suffix().isEmpty())
        fileName.append(".pdf");
    QPdfWriter writer(fileName);

    QPainter painter(&writer);
    painter.setRenderHint(QPainter::Antialiasing);

    int height = painter.device()->height();
    int semi = height/2;
    int width = painter.device()->width();
    int digits = 1;

    qDebug() << "height : " << height << " width : " << width;

    QImage logo(logoName);
    QImage finalLogo = logo.scaled(3750, 1250, Qt::KeepAspectRatio);




    while(it.hasNext()){
        it.next();
        digits = countDigits(order);
        if(it.fileInfo().isFile()){
            if(order%2!=0){
                painter.drawImage(300,100,finalLogo);
                QImage currentPreview(it.filePath());
                QImage finalPreview = currentPreview.scaled(3250,4000, Qt::KeepAspectRatio);
                painter.drawImage(650,1500,finalPreview);

其余的只是文字/边框的绘制。

我在调试中尝试过:工作正常我在发布中编译,将所有.dll放在文件中(包括平台)并在没有Qt的情况下运行它:工作正常

然后我把文件放在一个usb棒上,我把它放在我用于图片的另一台电脑上,那台电脑没有Qt。 我启动了.exe,应用程序显示在我的开发者电脑上

但是当我调用PDF创建时,我在FileDialogs中填充了我的数据,它运行了大约30秒(文件中有很多图片)并生成PDF。

我打开它,而不是PDF上的单个图片。

所有的行和文本都没有任何问题,它生成了正确数量的采购订单但没有一张图片......既没有徽标(QImage finalLogo)也没有预览(QImage finalPreview)

这就像QPainter::drawText()/drawLine()确实有效,但不是QPainter::drawImage

这是令人不安的,因为它在计算机上运行而在另一台计算机上运行...编译/发布时我做错了吗?

在评论中回答 - 转换为社区维基。

OP写道:

好 ! 我想到了。 处理jpeg的dll不在正确的目录中,我把它移到了正确的目录,它运行了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM