Russian Qt Forum

Qt => Qt Quick => Тема начата: Nimbus от Февраль 21, 2012, 13:59



Название: QDeclarativeView ресайзится в лэйауте
Отправлено: Nimbus от Февраль 21, 2012, 13:59
Здравствуйте. Извиняюсь за нубский вопрос.
Проблема - у QDeclarativeView при добавлении его в любой лэйаут появляются отступы со всех сторон:
(http://s017.radikal.ru/i418/1202/dd/aa6eb04c1d2d.png)
А при отображении его отдельным окном - всё как надо:
(http://s59.radikal.ru/i165/1202/66/15e576d1c333.png)
Сам QML:
Цитировать
import Qt 4.7

Row {
    anchors.fill: parent

   Image {
     source: "http://4geo.ru/webservices/i/icon_page_comments.png"
   }
   Text { text: "Отзывы"
       MouseArea {
      anchors.fill: parent
      onClicked: {
         
      }
       }
       color: "#006ec1"
   }
   Text { text: "(3)"}
}
У объекта проставлен resizeMode = QDeclarativeView::SizeViewToRootObject. Если поменять на второй - эффекта почти нет.
Вобщем, как сделать, чтобы он в лэйауте отображался с минимальным размером, учитывая, что он, возможно, будет ресайзить сам себя в будущем динамически по мере добавления контента, так что, всякие там setFixedSize тут не канают.
sizeHint() возвращает нужный размер, но вот size() - увеличен. И resize не помогает. Помогите нубу, пожалуйста!


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: mutineer от Февраль 21, 2012, 14:01
Сам layout добавляет отступы. Кури параметры layout - там можно поменять отступы


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: Пантер от Февраль 21, 2012, 14:02
http://doc.qt.nokia.com/4.8-snapshot/qlayout.html#setContentsMargins


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: Nimbus от Февраль 22, 2012, 04:17
И что?
>layout->setContentsMargins(0, 0, 0, 0);
(http://i031.radikal.ru/1202/21/b65f6912de5f.png)
Вы не поняли, наверное. Этот метод устанавливает отступы по бокам. А если присмотреться, то сам виджет QML'я расширен и отступы тут нипричём.

Похоже проблема не в QDeclarativeView, а в его базовом классе QGraphicsView. Пока не знаю как решить


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: Bepec от Февраль 22, 2012, 06:57
Ну у вас же видно!

На первом виджете у вас стоит КНОПКА и ЛЕЙБЛ.
На втором - ЛЕЙБЛ.

Ясен пень, что компоновщик расширяет ЛЕЙБЛ. Поиграйте с Strech факторами. 0,1 должно дать нужный вам эффект.

Подтягивать виджет за вас до минимального состояния, ни один компоновщик не будет ;)

PS данная информация не претендует на роль достоверной, но должна сработать :D



Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: Nimbus от Февраль 22, 2012, 11:22
К сожалению, не принесло нужного результата


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: twp от Февраль 22, 2012, 14:26
ради одной строки пихать целый QDeclarativeView :o Может сделать проще - все на QML или на стандартных виджетах? И раз уж нужна такая необходимость, то нужно глянуть весь код


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: Nimbus от Февраль 22, 2012, 20:02
ради одной строки пихать целый QDeclarativeView :o Может сделать проще - все на QML или на стандартных виджетах? И раз уж нужна такая необходимость, то нужно глянуть весь код
QML нужен, ибо он будет генериться сервером на основании GET-запроса, и именно на его основании будет строиться виджеты. Хотели сначала просто чтобы JSON приходил и парсить его и на его основании создавать виджеты. Однако, зачем строить велосипеды?
И да, возможно, там будет не одна строка :)


Название: Re: QDeclarativeView ресайзится в лэйауте
Отправлено: twp от Февраль 23, 2012, 11:21
ну тогда лучше все сделать на QML. Кнопку можно взять из примеров или заюзать десктопные компоненты, хотя они еще не готовы, насколько я знаю.