У меня возникли проблемы с установкой моего содержимого (растяжения) сцены в мой QDeclarativeView. Я загружаю файл QML обычным способом. Я отменяю метод showEvent и resizeEvent на коде ниже:Qt 4.8.5 QGraphicsView :: fitInView не подходит точно
QGraphicsItem* rootItem = this->scene()->items.at(0);
QRectF rootRect = rootItem->sceneBoundingRect(); // it gives me a QRectF(0,0,1920,1080)
this->fitInView(rootRect, Qt::IgnoreAspectRatio); // Aspect doesn't matters.
Проблема заключается в том, что он продолжает показывать небольшую белую рамку (почти 4 пикселей) вокруг содержимого. Я тестировал в 1920x1080, 1920x1200 и 1440x900, и все эти разрешения на моем рабочем столе показывают содержимое с той же проблемой. Даже в полноэкранном режиме он сохраняет небольшую белую границу.
Чтобы убедиться, что это ничего не значит из содержимого, я установил черную картинку в фоновом режиме, а белая рамка стала черной (другими словами, содержимое уменьшено слишком сильно, чтобы вписаться).
Вычитание значений из прямоугольного жесткого кодирования не является опцией, если оно изменяет часть фона в зависимости от размера содержимого. (Он должен адаптироваться динамически).
Любые предложения?
Если вы пытаетесь вставить всю сцену в поле зрения с fitInView, что я думаю, что вы видите, это граница MainWindow (QDeclarativeView). Посмотрите на удаление этих элементов, чтобы предотвратить отображение белой границы. Возможно, что настройка frameRectangle на нулевое значение прямой или наследование и установка полей на ноль помогут. – TheDarkKnight
@ Merlin069 Это не оконные рамы. Это фон сцены, о котором я рассказывал в описании вопроса. Паллиативное решение состоит в том, чтобы нарисовать фон сцены черным QBrush (я использую темное фоновое изображение в файле QML). – emanuelcds
Как раз упомянуть, я уже пробовал свойство stylesheet без успеха. Это не граница. Реальная проблема заключается в том, что fitInView не является точной подгонкой контента. – emanuelcds