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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Доступ к qApp из qml  (Прочитано 4481 раз)
BlackSoul
Гость
« : Август 29, 2012, 16:49 »

Доброго времени суток.

имеется qt приложение, которое выполняет некоторый qml код( допустим, задача стоит "получить список файлов в текущей папке, используя qml" ).

Вопрос: Как можно получить доступ из qml к qApp или хотя бы QApplication::applicationDirPath() ?

есть вариант наследования от QApplication с переопределением нужных методов и объявлением их Q_INVOKABLE( тогда можно будет в qml передать 1 объект и не париться ради каждого метода), но он мне не нравится.

может есть еще варианты?
Записан
mutineer
Гость
« Ответ #1 : Август 29, 2012, 16:57 »

Можно выставить любой наследник QObject в qml при помощи http://doc.crossplatform.ru/qt/4.7.x/qdeclarativecontext.html#setContextProperty
Записан
BlackSoul
Гость
« Ответ #2 : Август 30, 2012, 08:03 »

это понятно. но у него можно будет вызвать только слоты и методы с Q_INVOKABLE
Записан
Patrin Andrey
Гость
« Ответ #3 : Август 30, 2012, 08:17 »

есть вариант наследования от QApplication с переопределением нужных методов и объявлением их Q_INVOKABLE( тогда можно будет в qml передать 1 объект и не париться ради каждого метода), но он мне не нравится.
Наследоваться не стоит, ИМХО. Функционал который тебе может быть нужен, может быть реализован не через виртуальные функции, и тогда ничего не переопределишь. Лучше просто создать отдельный объект который через Q_INVOKABLE будет выполнять определённые действия.
Записан
kirill9617
Гость
« Ответ #4 : Январь 09, 2013, 09:34 »

Код
C++ (Qt)
QApplication app(argc, argv);
QmlApplicationViewer viewer;
....
viewer.rootContext()->setContextProperty(QString("cp_apppath"),app.appapplicationDirPath());
....
 
cp_apppath -имя нашей ссылки

после этого к ссылке можно обращатся из любого QML и JS кода
например:
Код:
Image {
    id: cover
    source: cp_apppath+"/images/cover.jpg"
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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