crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Несколько вопросов от новичка
MishaUA
  опции профиля:
сообщение 28.7.2013, 11:00
Сообщение #1


Участник
**

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

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




Репутация:   0  


Было работающие приложение на Qt5, работающее под виндой и андроидом, все было норм, но заказчику сильно захотелось красивую форму, соответственно, теперь нужно переделать отображение на QML.
Итак, что делает програмка:
Есть QTabWidget и QPushButton. Но нажатию QPushButton создается новая вкладка на QTabWidget и заполняется остальными виджетами: QcheckBox, QSpinEdit, QDoubleSpinEdit, QPushButton, QgroupBox и т.д.
Собственно, это мне надо переделать на QML. Сутки изучая материалы с инета, я решил использовать Qt Quick 2.0.
Стоит отметить, что со скриптовыми языками практически не знаком, последний раз использовал JavaScripts несколько лет назад, но поизучав доки Qt Quick немного въехал в курс дела.
Вопросы:
1. Нужно ли все контролы (типа QTabWidget, QDoubleSpinEdit и т.д.) создавать вручную? Где то читал, что в Qt Quick 2.0 есть что то подобное готовым виджетам, в которых можно руками изменить что угодно.
2. Можно ли в разных QML файлах делать одинаковым id компонента?

Это только 2 вопроса, остальные появляться чуть позже)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 28.7.2013, 17:05
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

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




Репутация:   0  


1. Если я правильно все понял, то можно не создавать

2. В разных QML файлах можно делать одинаковые id.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 31.7.2013, 14:50
Сообщение #3


Участник
**

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

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




Репутация:   0  


пока что изучаю. Есть такая проблема:
При запуске приложения часто вылазит виндовское окно "прекращена работа программы", вот подробности:
Сигнатура проблемы:
  Имя события проблемы:    APPCRASH
  Имя приложения:    qml3.exe
  Версия приложения:    0.0.0.0
  Отметка времени приложения:    51f8f74c
  Имя модуля с ошибкой:    ig4icd32.dll
  Версия модуля с ошибкой:    8.15.10.1892
  Отметка времени модуля с ошибкой:    4a9eb9c4
  Код исключения:    c0000005
  Смещение исключения:    00031fa6
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    0a9e
  Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:    0a9e
  Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789

Собственно, проблема в какой то ig4icd32.dll, но в инете нигде не нашел упоминания об проблемах qlm из-за ig4icd32.dll. Причем, если запускаю скомпилированый файл, то но может запуститься, а может и нет. Если просто пытаюсь его несколько раз запустить, то запускается обычно с 3-5 раза.
Если запускаю с QtCreatora, то в логе еще появляется вот что:
QML debugging is enabled. Only use this in a safe environment.
getProcAddress: Unable to resolve 'glGenFramebuffers'
getProcAddress: Unable to resolve 'glGenFramebuffersOES'
getProcAddress: Unable to resolve 'glGenFramebuffersARB'
getProcAddress: Unable to resolve 'glBindFramebuffer'
getProcAddress: Unable to resolve 'glBindFramebufferOES'
getProcAddress: Unable to resolve 'glBindFramebufferARB'

Но если программа запускается, то вроде бы работает нормально
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 31.7.2013, 18:41
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

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




Репутация:   0  


Возможно у тебя проблемы с OpenGL, попробуй обновить.
Кстати какая у тебя сборка Qt?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 31.7.2013, 22:14
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


ig4icd32.dll - это акселератор видеокарты от интел для лаптопов. возможно, надо обновить драйверы материнки или видеокарты.
посмотри тут:
http://www.intel.com/support/graphics/sb/CS-031461.htm

Сообщение отредактировал Iron Bug - 31.7.2013, 22:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 2.8.2013, 13:38
Сообщение #6


Участник
**

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

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




Репутация:   0  


да, в этом и была проблема. Обновил драйверы видеокарты и заработало)))
Следующая проблема с использованием QtQuick.Controls.
Есть такой код:
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
}

Как видите, тупо красный прямоугольник. На компе запускается правильно, на андроиде тоже. Если добавляю кнопку из QtQuick.Controls :
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
    Button { text: "gg"}
}

То на ПК она отображается, а на андроиде просто белый прямоугольник.
Стоит учесть, что qml файл находится в ресурсах.
Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом.
В чем тогда проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 2.8.2013, 21:06
Сообщение #7


Участник
**

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

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




Репутация:   0  


И еще вопрос:
Можно ли сигнал, который в qml файле коннектить к слоту из cpp файла? Только connect нужно сделать в самом cpp файле
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 6.8.2013, 2:12
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

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




Репутация:   0  


Цитата(MishaUA @ 2.8.2013, 21:06) *
И еще вопрос:
Можно ли сигнал, который в qml файле коннектить к слоту из cpp файла? Только connect нужно сделать в самом cpp файле


Да, можно. Это делается примерно так:

QQuickView *pView = new QQuickView;
QObject *pObject = pView->rootObject();
connect(pObject, SIGNAL(сигнал из QML()), получатель, SLOT(слот()));


Цитата(MishaUA @ 2.8.2013, 13:38) *
да, в этом и была проблема. Обновил драйверы видеокарты и заработало)))
Следующая проблема с использованием QtQuick.Controls.
Есть такой код:
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
}

Как видите, тупо красный прямоугольник. На компе запускается правильно, на андроиде тоже. Если добавляю кнопку из QtQuick.Controls :
import QtQuick 2.1
import QtQuick.Controls 1.0

Rectangle {
    width: 500
    height: 360
    color: "red"
    Button { text: "gg"}
}

То на ПК она отображается, а на андроиде просто белый прямоугольник.
Стоит учесть, что qml файл находится в ресурсах.
Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом.
В чем тогда проблема?


ну тут ты мог указать полный путь к QML файлу, тогда на компе оно будет работать из любого места.

если файл QML берется из ресурсов, то это делается примерно так
pView->setSource(QUrl("qrc:/QML/main.qml"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MherX
  опции профиля:
сообщение 3.9.2013, 14:09
Сообщение #9


Новичок


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

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




Репутация:   0  


Ответе пожалуйста не этот вопрос кто знает
Trisch,Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом.
В чем тогда проблема? Trisch,
уже довольно много времени потратил на это не получается разобраться почему то на десктопе запускается а на андроиде нет

Цитата(MherX @ 3.9.2013, 14:51) *
То на ПК она отображается, а на андроиде просто белый прямоугольник.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 4.9.2013, 23:29
Сообщение #10


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


Андроид - не венда. exe-шников там нет. он ищет файлы так же, как и любой другой линюкс: в системных папках. если ты хочешь заставить его искать файл в локальной папке, то у исполняемого файла должны быть явно прописаны пути поиска, в том числе в локальной папке. обычно это делается настройкой -Wl,-rpath=.
это настройка линковки, но куда это прилепляется в Qt я не знаю.

проверить, что проблема именно в отсутствии файла, можно просто запустив приложение с предустановленной переменной поиска LD_LIBRARY_PATH. например, так:
env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path_to_program /path_to_program/program
думаю, это должно сработать, если он тупо не может найти файл.

Сообщение отредактировал Iron Bug - 4.9.2013, 23:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 20:07