Russian Qt Forum
Май 14, 2024, 14:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDeclarativeView ресайзится в лэйауте  (Прочитано 5308 раз)
Nimbus
Гость
« : Февраль 21, 2012, 13:59 »

Здравствуйте. Извиняюсь за нубский вопрос.
Проблема - у QDeclarativeView при добавлении его в любой лэйаут появляются отступы со всех сторон:

А при отображении его отдельным окном - всё как надо:

Сам 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 не помогает. Помогите нубу, пожалуйста!
Записан
mutineer
Гость
« Ответ #1 : Февраль 21, 2012, 14:01 »

Сам layout добавляет отступы. Кури параметры layout - там можно поменять отступы
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Февраль 21, 2012, 14:02 »

http://doc.qt.nokia.com/4.8-snapshot/qlayout.html#setContentsMargins
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Nimbus
Гость
« Ответ #3 : Февраль 22, 2012, 04:17 »

И что?
>layout->setContentsMargins(0, 0, 0, 0);

Вы не поняли, наверное. Этот метод устанавливает отступы по бокам. А если присмотреться, то сам виджет QML'я расширен и отступы тут нипричём.

Похоже проблема не в QDeclarativeView, а в его базовом классе QGraphicsView. Пока не знаю как решить
« Последнее редактирование: Февраль 22, 2012, 06:38 от JC » Записан
Bepec
Гость
« Ответ #4 : Февраль 22, 2012, 06:57 »

Ну у вас же видно!

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

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

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

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

Записан
Nimbus
Гость
« Ответ #5 : Февраль 22, 2012, 11:22 »

К сожалению, не принесло нужного результата
Записан
twp
Гость
« Ответ #6 : Февраль 22, 2012, 14:26 »

ради одной строки пихать целый QDeclarativeView Шокированный Может сделать проще - все на QML или на стандартных виджетах? И раз уж нужна такая необходимость, то нужно глянуть весь код
Записан
Nimbus
Гость
« Ответ #7 : Февраль 22, 2012, 20:02 »

ради одной строки пихать целый QDeclarativeView Шокированный Может сделать проще - все на QML или на стандартных виджетах? И раз уж нужна такая необходимость, то нужно глянуть весь код
QML нужен, ибо он будет генериться сервером на основании GET-запроса, и именно на его основании будет строиться виджеты. Хотели сначала просто чтобы JSON приходил и парсить его и на его основании создавать виджеты. Однако, зачем строить велосипеды?
И да, возможно, там будет не одна строка Улыбающийся
« Последнее редактирование: Февраль 22, 2012, 20:05 от JC » Записан
twp
Гость
« Ответ #8 : Февраль 23, 2012, 11:21 »

ну тогда лучше все сделать на QML. Кнопку можно взять из примеров или заюзать десктопные компоненты, хотя они еще не готовы, насколько я знаю.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.084 секунд. Запросов: 22.