Заполнение в QScrollArea

#user-interface #qt4

#пользовательский интерфейс #qt4

Вопрос:

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

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

Иллюстрация упомянутого виджета.

(По-видимому, вы не можете прокручивать горизонтально на этой диаграмме …)

Пока я действительно не придумал, как это сделать. Я пытался возиться с sizeHint виджета и другими вещами (например, с использованием CSS), но, похоже, ни одна из них не работает. Что я должен делать вместо этого?

Ответ №1:

С помощью QScrollArea::widgetResizable == true свойство scroll area попытается изменить размер вашего виджета. Установите для этого свойства значение false. Или вы можете настроить размер вашего виджета canvas с помощью

 canvasWidget->setFixedSize(...);
               ||
canvasWidget->setMinimumSize(...);
  

Комментарии:

1. Это было не совсем то, что мне было нужно, но это каким-то образом привело меня в правильном направлении. Хотя я знал о SetFixedSize, на этот раз, используя его, мне удалось заставить его делать то, что я хотел. Я изменил виджет документа (большой, содержащий холст), чтобы он был просто областью прокрутки, которая порождает простой QWidget, затем использовал resizeEvent для изменения размера QWidget до желаемого размера. Это было намного проще, чем я думал. Я все равно дам вам ответ.