Отсутствующие функциональные возможности при развертывании приложения Qt

Я создал папку deploy для моего приложения 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 на компьютере, на котором я создаю приложение, эти диалоги работают правильно. Я предполагаю, что мне нужно включить некоторые дополнительные библиотеки, но я не знаю, какие из них, так как приложение не выдает никакой ошибки, оно просто не показывает диалоги. Я хотел бы помочь всем.

0

Решение

Ваши проблемы не имеют ничего общего с библиотеками.

Первый метод, очевидно, возвращает здесь:

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

К сожалению, вы не предоставили достаточно данных о второй ошибке, и я не могу сказать истинную причину этого.

1

Другие решения


По вопросам рекламы [email protected]