crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

revers
  опции профиля:
сообщение 21.12.2009, 23:39
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 21.12.2009
Пользователь №: 1326

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вопрос тем, кто разбирался с вышедшим 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'е, все работает на отлично. Желания же копаться в исходниках этого вьювера особо нет...
Может кто знает почему это все работает не до конца, и объяснит как это исправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 5)
revers
  опции профиля:
сообщение 22.12.2009, 7:29
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 21.12.2009
Пользователь №: 1326

Спасибо сказали: 0 раз(а)




Репутация:   0  


Все просто. qmlView->setFocus().
И нет, у меня не раздвоение личности, хоть и выглядит, будто ответил сам себе)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.12.2009, 16:14
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(revers @ 22.12.2009, 10:29) *
Все просто. qmlView->setFocus().
а если этот код не писать, а, например, ткнуть в него мышкой, чтобы фокус на нём оказался, будут работать клавиатурные события?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
revers
  опции профиля:
сообщение 23.12.2009, 7:25
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 21.12.2009
Пользователь №: 1326

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не будут. Даже если ткнуть на элемент TextInput, текстовый курсор на нем появится, но редактировать не получиться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.12.2009, 13:46
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


revers, наверное это баг.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Strikevld
  опции профиля:
сообщение 9.12.2011, 10:22
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 53
Регистрация: 6.9.2011
Пользователь №: 2849

Спасибо сказали: 6 раз(а)




Репутация:   0  


Не баг.
свойство activeFocusOnPress ставим true
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 29.5.2025, 23:37