我已经为我的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创建器时,我正在构建应用程序,这些对话框正常工作。我猜我需要包含一些额外的库,但我不知道哪些库,因为应用程序不会抛出任何错误,它只是不显示对话框。我会帮助你。
答案 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";
}
不幸的是,你没有提供关于第二个错误的足够数据,我无法说出它的真正原因。