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

deploy フォルダーがあるコンピューターでは、両方のダイアログが表示されません。アプリを構築しているPCのQtクリエーターでこれを実行すると、これらのダイアログが正しく機能します。追加のライブラリを含める必要があると思いますが、アプリがエラーをスローせず、ダイアログが表示されないだけなので、どれがどれかわかりません。

4

1 に答える 1

1

あなたの問題はライブラリとは何の関係もありません。

最初のメソッドは、明らかに、次のように返されます。

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

2つ目は中に入りません

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

2番目のものについては、間違いなく追加する必要があります:

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

残念ながら、2 番目のエラーについて十分なデータが提供されていないため、その本当の理由はわかりません。

于 2015-05-14T09:25:25.267 に答える