2013-06-17 4 views
1

После успешного переноса моего приложения на Windows, основанного на Qt, на OSX я заметил проблему. Виджеты ведут себя довольно странно: ни одна ошибка не возникает, и точно такой же код используется в Windows.Qt on OSX Unresponsive widgets

Виджеты, такие как QTreeView и QListView, при нажатии на них показывают синюю рамку вокруг них. Когда в этом состоянии этот виджет становится невосприимчивым к кликам. То есть, пока не будет нажат другой виджет, он станет «активным» с синей рамкой. Когда первый виджет нажат (неактивный), он реагирует, но затем получает синюю рамку и не реагирует на какой-либо вход.

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

Поскольку я не могу воспроизвести это поведение в Windows с идентичным кодом, это должен быть Qt на OSX или сам OSX.

У меня нет подсказки относительно того, что вызывает это.

Кстати, я использую Qt 5.0.2

Я ценю все и вся помощь.

Подробнее: Я had'nt заметил это, но я получаю выход QBackingStore::flush() called with non-exposed window, behavior is undefined.

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

+1

Попробуйте создать небольшой проект и проверьте, существует ли проблема. Если это так, напишите здесь код. –

+0

Я использую Xcode, кстати, и я попытался загрузить пример qt в xcode, но были ошибки компоновщика, поэтому я сделал это в QtCreator, и он работал абсолютно отлично. :(Это раздражает – Constan7ine

+0

Так что в коде есть что-то не так. Постарайтесь опубликовать код, который может быть связан с проблемой. –

ответ

1

Итак, вы все знаете, что это было исправлено путем обновления до бета-версии Qt 5.1.0.

Я не могу объяснить, почему он работает только при использовании новой версии, а не в более старой версии. Мой собственный код между ними идентичен.