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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Родительское окно при вызове из по&#  (Прочитано 3953 раз)
RustAlex
Гость
« : Январь 18, 2016, 15:42 »

Везде по коду QML использую механизм создания окошек с затемнением основного окна приложения, код ниже:
// обеспечивает затемнение области и ограничение пространства работы мыши
// мышь будет работать только внутри второй области
Код
Javascript
   width: mainWindow.width
   height: mainWindow.height
   visible: false
 
   Rectangle {
       id: mainRect2
       color: Qt.rgba(0.0, 0.0, 0.0, 0.5)
       anchors.fill: parent
       MouseArea {
           anchors.fill: parent
       }
   }
 

Однако в одном месте генерирую динамический QML из под JS. В результате mainWindow.width, mainWindow.height - не захватывает все окно приложения... почему-то берут рамки окна меньше (возможно окна из которого отрабатывал JS). Как задать окно приложения явно?
« Последнее редактирование: Январь 21, 2016, 19:58 от RustAlex » Записан
BuRn
Гость
« Ответ #1 : Январь 19, 2016, 08:54 »

Покажите, как вы создаете объект, через createObject ?
Записан
RustAlex
Гость
« Ответ #2 : Январь 19, 2016, 10:31 »

Функция paintAgenda() вызывается в qml коде. В нее передаю делегат в котором будет отрисовка:
Код
C++ (Qt)
function paintAgenda( parentDelegate, ...) {
   var dynComponent    = Qt.createComponent("Agenda.qml");
   ...
   createAgenda( parentDelegate, dynComponent, ... )
   ...
}
 
function createAgenda( parentDelegate, dynComponent, ....)
{
   var obj1 = dynComponent.createObject(parentDelegate, {"txtName":"Test name!", "height":"20", "width":"70"});
   ...
}
Записан
BuRn
Гость
« Ответ #3 : Январь 20, 2016, 23:14 »

Функция paintAgenda() вызывается в qml коде. В нее передаю делегат в котором будет отрисовка:
Код
C++ (Qt)
function paintAgenda( parentDelegate, ...) {
   var dynComponent    = Qt.createComponent("Agenda.qml");
   ...
   createAgenda( parentDelegate, dynComponent, ... )
   ...
}
 
function createAgenda( parentDelegate, dynComponent, ....)
{
   var obj1 = dynComponent.createObject(parentDelegate, {"txtName":"Test name!", "height":"20", "width":"70"});
   ...
}
Что-то не пойму, так вы своему объекту задаете статически размер... Если это в качестве примера, то попробуйте так же, как вы задаете ширину и высоту, прибить анкорсами к паренту
Записан
RustAlex
Гость
« Ответ #4 : Январь 21, 2016, 18:47 »

При создании данного объекта он координатами и размерами привязывается статично к делегату, на котором происходит отрисовка.
См. вложенный рисунок.

При обработке MouseArea { onClicked: ... } в Agenda.qml - выводится окошко диалога - которое ранее создано, и у него меняется флаг visible - заполняются поля извлеченные из объекта, т.е. отражается детальная информация об объекте.
Это окошко реализовано аналогично другим подобным в системе - везде затенение области приложения (В чем и проблема) происходит корректно. А здесь нет - мое предположение связано с тем что создается объект из JS...

Записан
RustAlex
Гость
« Ответ #5 : Январь 21, 2016, 19:06 »

Проблема разрешилась. Тупил сам. Был создан дублирующий объект не с тем родителем... Вызов из JS не играл никакой роли.
Спасибо за участие!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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