2017-02-15 10 views
0

Я хочу разместить изображение в моем графическом интерфейсе Qt. Проблема, которую я испытываю, - это масштабирование изображения после его загрузки - оно, по-видимому, уменьшено. Это происходит из-за ошибки в процедуре fitInView(), которая вызывается для соответствия изображению данному размеру окна. В частности, в моем повторной реализации в fitInView() есть следующая строка:Размер видового экрана Qt неправильный

viewrect = self.viewport().rect() 

viewport().rect() возвращает неверные результаты, потому что изображение не было показано ранее, и что заставляет виджет иметь «фиктивные размеры», как было указано в this forum thread.

Возможные решения, которые я нашел, в основном согласуются друг с другом в одном - нужно выполнить процедуру showEvent(), которая будет звонить fitInView(); таким образом, изображение будет иметь время для правильной загрузки, а виджет просмотра виджета будет установлен на правильное значение. Я попробовал:

def showEvent(self, event): 
    self.fitInView() 

Эта функция вызывается после того, как я выбираю изображение, которое я хочу, чтобы загрузить и вызвать self.show(), чтобы показать, что изображение. Однако реализация showEvent() не решила проблему. Кто-нибудь сталкивался с этим вопросом раньше?

ответ

-1

Решение оказалось очень похоже на то, что я пробовал. Просто установка и установка pixmap после вызывает window.show() исправленный размер проблемы! Также необходимо поддерживать нормальную работу showEvent().