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

Missing functionalities when deploying Qt application

我已经为我的 Qt gui 应用程序创建了一个部署文件夹,我已经添加了它需要的所有 DLL。该应用程序 运行ning,但缺少 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);
        }
    }

两个对话框均未在具有部署文件夹的计算机上显示。当我在我正在构建应用程序的 pc 上的 Qt creator 中 运行 this 时,这些对话框正常工作。我想我需要包括一些额外的库,但我不知道是哪些库,因为应用程序不会抛出任何错误,它只是不显示对话框。

您的问题与图书馆无关。

第一种方法,很明显,returns这里:

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";
}

很遗憾,您没有提供足够的关于第二个错误的数据,我无法说出真正的原因。