2015-05-14 8 views
0

Я создал папку развертывания для своего приложения Qt gui, я добавил все .dll, за которые он закричал. Приложение работает, но есть 2 функции, которые отсутствуют.Отсутствует функциональность при развертывании приложения Qt

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

+0

Я решил проблему с диалогом печати - мне пришлось добавить папку с именем printsupport рядом с исполняемым файлом. В этой папке мне пришлось поместить файл windowsprintersupport.dll. Я даже не знаю, почему не работает диалог. – Bremen

+1

Попробуйте развернуть приложение с помощью средства развертывания Windows, которое можно найти в 'QTDIR/bin/windeployqt.exe'. Он автоматически помещает все необходимые файлы в ваш каталог приложения. – Nejat

+0

Эта программа не добавляет мне некоторые DLL-файлы, например libgcc_s_dw2-1.dll – Bremen

ответ

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

Если проблема не связана с фи le path, тогда вы должны проверить разрешения файлов. И написать что-то вроде этого:

if (!f.open(QFile::ReadOnly | QFile::Text)) { 
    qDebug() << "Error opening file. Error code =" << f.error(); 
    return; 
} 

Для второго вы должны обязательно добавить:

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

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

+0

Привет, Первый случай действительно был проблемой, не связанной с lib. Файл действительно не был, спасибо. A для второго, я отсутствовал windowsprintsupport.dll – Bremen

+0

Да, я прочитал вам комментарий. Моя ошибка :) Постаралась не исправлять это. – Amartel

 Смежные вопросы

  • Нет связанных вопросов^_^