Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Declarative UI. Keys events.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Quick
revers
Вопрос тем, кто разбирался с вышедшим declarative. Вот код файла "textInput.qml":
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()
    }
}

Мне почти удалось заставить это работать, добавлением следующих строк в конструктор главного виджета:
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'е, все работает на отлично. Желания же копаться в исходниках этого вьювера особо нет...
Может кто знает почему это все работает не до конца, и объяснит как это исправить?
revers
Все просто. qmlView->setFocus().
И нет, у меня не раздвоение личности, хоть и выглядит, будто ответил сам себе)
Litkevich Yuriy
Цитата(revers @ 22.12.2009, 10:29) *
Все просто. qmlView->setFocus().
а если этот код не писать, а, например, ткнуть в него мышкой, чтобы фокус на нём оказался, будут работать клавиатурные события?
revers
Не будут. Даже если ткнуть на элемент TextInput, текстовый курсор на нем появится, но редактировать не получиться.
Litkevich Yuriy
revers, наверное это баг.
Strikevld
Не баг.
свойство activeFocusOnPress ставим true
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.