0

我已经为我的 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);
        }
    }

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

4

1 回答 1

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

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

于 2015-05-14T09:25:25.267 回答