部署Qt应用程序时缺少功能

时间:2015-05-14 09:04:51

标签: c++ qt deployment printing about-box

我已经为我的Qt gui应用程序创建了一个部署文件夹,我添加了他所尖叫的所有.dll。该应用程序正在运行,但缺少2个功能。

void MainWindow::on_action_About_triggered()
{
    QString filePatch = QApplication::applicationDirPath() + "/changelog.txt";
    QFile f(filePatch);
    if (!f.open(QFile::ReadOnly | QFile::Text))
        return;

    QTextStream in(&f);
    QMessageBox::about(this, tr("About testapp"),
                getAppVersion() + "\ntestapp\n\n" + in.readAll());
}

QPrinter printer;
    printer.setFullPage(true);
    printer.setPaperSize(QPrinter::A4);
    printer.setOrientation(QPrinter::Landscape);

    if (SpecialTypes::printType_t::ePrint == pType)
    {
        printer.setOutputFormat(QPrinter::NativeFormat);

        QPrintDialog printDial(&printer, this);
        if (printDial.exec() == QDialog::Accepted)
        {
            textEdit->document()->print(&printer);
        }
    }

在具有deploy文件夹的计算机上未显示这两个对话框。当我在PC上运行Qt创建器时,我正在构建应用程序,这些对话框正常工作。我猜我需要包含一些额外的库,但我不知道哪些库,因为应用程序不会抛出任何错误,它只是不显示对话框。我会帮助你。

1 个答案:

答案 0 :(得分:1)

您的问题与图书馆无关。

第一种方法显然会在这里返回:

if (!f.open(QFile::ReadOnly | QFile::Text))
    return;

第二个没有进入

if (SpecialTypes::printType_t::ePrint == pType)

对于第一个,我建议您打印以记录文件名,如果是这种情况,请将代码更改为:

QDir dir(QApplication::applicationDirPath());
QFile f(dir.absoluteFilePath("changelog.txt"));

如果问题未连接到文件路径,则应检查文件的权限。写下这样的东西:

if (!f.open(QFile::ReadOnly | QFile::Text)) {
    qDebug() << "Error opening file. Error code =" << f.error();
    return;
}

对于第二个,你一定要加上:

} else {
    qDebug() << "SpecialTypes::printType_t::ePrint != pType";
}

不幸的是,你没有提供关于第二个错误的足够数据,我无法说出它的真正原因。