部署 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";
}
很遗憾,您没有提供足够的关于第二个错误的数据,我无法说出真正的原因。
我已经为我的 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";
}
很遗憾,您没有提供足够的关于第二个错误的数据,我无法说出真正的原因。