Вопрос тем, кто разбирался с вышедшим 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'е, все работает на отлично. Желания же копаться в исходниках этого вьювера особо нет...
Может кто знает почему это все работает не до конца, и объяснит как это исправить?