Russian Qt Forum

Qt => Qt Quick => Тема начата: revers от Декабрь 21, 2009, 02:40



Название: Declarative UI. Keys events.
Отправлено: revers от Декабрь 21, 2009, 02:40
Вопрос тем, кто разбирался с вышедшим declarative. Вот код файла "textInput.qml":
Код
C++ (Qt)
import Qt 4.6
 
Rectangle {
   id: main
   width: 800; height: 600
   color: "blue"
   signal up()
   TextInput {
       id: inp
       text: "Text"
       color: "white"
   }
   focus: true
   Keys.onPressed: { inp.text = "Up"; main.up() }
   MouseRegion {
       anchors.fill: parent
       onClicked: main.up()
   }
}
Мне почти удалось заставить это работать, добавлением следующих строк в конструктор главного виджета:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   qmlView = new QmlView(this);
   qmlView->setContentResizable(true);
   connect(qmlView, SIGNAL(errors(QList<QmlError>)), this, SLOT(printErrors(QList<QmlError>)));
   QUrl url = QUrl::fromLocalFile("\.\.\\textInput.qml");
   qmlView->setUrl(url);
   qmlView->execute();
   this->resize(qmlView->sizeHint());
   qmlView->show();
 
   rootItem = qmlView->root();
   connect(rootItem, SIGNAL(up()), this, SLOT(onUp()));
}
"Почти" - потому что не работают сигналы от клавиатуры. Как видно из qml-файла, по нажатию клавиши/кнопки мыши посылается один и тот же сигнал. Но код из слота onUp() выполняется только, если кликаем мышью. При этом, если открыть qml-ку в qmlviewer'е, все работает на отлично. Желания же копаться в исходниках этого вьювера особо нет...
Может кто знает почему это все работает не до конца, и объяснит как это исправить?


Название: Re: Declarative UI. Keys events.
Отправлено: revers от Декабрь 22, 2009, 07:25
AAAAaaa.... Готов покарать себя:)
qmlView->setFocus() и все работает.