После использования QFileDialog программа вылетает через несколько секунд - PullRequest
0 голосов
/ 08 апреля 2019

Я делаю приложение для повышения производительности в нашей компании.Он читает весь файл .csv и помещает его содержимое в таблицу в формате .pdf.Я использую QT в качестве библиотеки GUI и PoDoFo в качестве библиотеки .pdf.

Дело в том, что после того, как я позволил пользователю выбрать файл .csv для получения данных и путь для сохранения сгенерированного .pdf, программа зависает примерно через две минуты.Это варьируется от случая к случаю.Я смог «отследить» проблему до QFileDialog.

Не имеет значения, создал ли я его в стеке, или динамически все еще происходит то же самое.С того момента, как вы нажмете «Выбрать» в графическом интерфейсе, который откроет диалоговое окно файла, программа потерпит крах примерно через две минуты, сообщив об этом в Visual Studio Community 2017

enter image description here

Мне удалось создать минималистичный код, чтобы воспроизвести ошибку.Я использую Windows 7 Pro, Microsoft Visual Studio Community 2017, компилирую 32-битные файлы отладки

.h, .cpp, .ui: https://www.dropbox.com/sh/cf057p4lnumesol/AAD39zDJnrxGChXAuE7y27Kra?dl=0

Любая помощь будет оценена, яЯ потратил 5 дней моего свободного времени, пытаясь понять это.Спасибо

РЕДАКТИРОВАТЬ: я понимаю, что «Кадр не в модуле» означает, что Visual Studio не имеет символов отладки для части кода, где произошел сбой, так как я не собирал qt сам, это имеет смысл.

EDIT2: я использую надстройку QT Visual Studio Tools версии 2.3.2 Версия Qt - 5.12.2

EDIT3: сбой происходит только при компиляции 32-битной арки.

EDIT4: сбой происходит только при использовании собственного диалогового окна файла.Если установлена ​​опция QFileDialog::DontUseNativeDialog, сбой не происходит.

1 Ответ

0 голосов
/ 12 апреля 2019

Не уверен, что это связано, но у меня возникла проблема, когда, если бы я дал путь к FileDialog, он мог бы стираться на несколько секунд, потому что он каким-то образом интерпретировал его как сетевой путь. Чтобы исправить это, я дал ему путь с префиксом "file://". Для этого я сделал это:

QUrl().fromLocalFile(cell_info->progDir()).toString()

Первоначальный путь пришел от cell_info->progDir(). Каким-то образом этот путь был обычным для Windows конкретным путем. Как только я поместил его в вызов from LocalFile, он произвел то, что мне было нужно для всех платформ, с которыми я его использовал.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...