У меня проблемы с Qt4-Qt5. В моем приложении, когда пользователь нажимает кнопку печати, должны произойти две вещи: во-первых, PDF-файл записывается на диск (который по-прежнему отлично работает в новой версии, поэтому я знаю, что некоторые функции печати работают правильно), а во-вторых заключается в том, что QPrintDialog должен выполнить exec(), а затем отправить на подключенный принтер.
Я вижу диалоговое окно при запуске с моей машины разработки. Приложение запускается на развернутом компьютере, но QPrintDialog никогда не отображается, и документ никогда не печатается.
Я включаю поддержку печати.
QT += core gui network webkitwidgets widgets printsupport
Я использовал Process Explorer, чтобы увидеть, какие библиотеки DLL использует приложение на моем компьютере для разработки, и я считаю, что все присутствует. В комплект моего приложения входят:
- {myAppPath}\MyApp[MyApp.exe, Qt5PrintSupport.dll, ...]
- {myAppPath}\plugins\printsupport\windowsprintersupport.dll
- {myAppPath}\plugins\imageformats[qgif.dll, qico.dll,qjpeg.dll, qmng.dll, qtga.dll, qtiff.dll, qwbmp.dll]
Ниже приведен соответствующий фрагмент кода:
void PrintableForm::printFile()
{
//Writes the PDF to disk in every environment
pdfCopy();
//Paper Copy only works on my dev machine
QPrinter paperPrinter;
QPrintDialog printDialog(&paperPrinter,this);
if( printDialog.exec() == QDialog::Accepted ) {
view->print(&paperPrinter);
}
this->accept();
}
Моя первая мысль заключается в том, что соответствующие библиотеки DLL не обнаруживаются во время печати, а это означает, что файловая система моего приложения неверна, но я не нашел ничего, что указывало бы мне на другую файловую структуру. Я на правильном пути или что-то еще не так с этой настройкой?
{myAppPath}\plugins\printsupport\windowsprintersupport.dll
? Должно быть без части плагинов. Установите для переменной envQT_DEBUG_PLUGINS
ненулевое значение и запустите приложение из консоли, чтобы убедиться, что плагин действительно найден и используется. - person peppe   schedule 19.06.2013