![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
MishaUA |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
Было работающие приложение на 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 |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: ![]() ![]() ![]() |
1. Если я правильно все понял, то можно не создавать
2. В разных QML файлах можно делать одинаковые id. |
|
|
MishaUA |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
пока что изучаю. Есть такая проблема:
При запуске приложения часто вылазит виндовское окно "прекращена работа программы", вот подробности:
Собственно, проблема в какой то ig4icd32.dll, но в инете нигде не нашел упоминания об проблемах qlm из-за ig4icd32.dll. Причем, если запускаю скомпилированый файл, то но может запуститься, а может и нет. Если просто пытаюсь его несколько раз запустить, то запускается обычно с 3-5 раза. Если запускаю с QtCreatora, то в логе еще появляется вот что:
Но если программа запускается, то вроде бы работает нормально |
|
|
Trisch |
![]()
Сообщение
#4
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: ![]() ![]() ![]() |
Возможно у тебя проблемы с OpenGL, попробуй обновить.
Кстати какая у тебя сборка Qt? |
|
|
Iron Bug |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
ig4icd32.dll - это акселератор видеокарты от интел для лаптопов. возможно, надо обновить драйверы материнки или видеокарты.
посмотри тут: http://www.intel.com/support/graphics/sb/CS-031461.htm Сообщение отредактировал Iron Bug - 31.7.2013, 22:15 |
|
|
MishaUA |
![]()
Сообщение
#6
|
Участник ![]() ![]() Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
да, в этом и была проблема. Обновил драйверы видеокарты и заработало)))
Следующая проблема с использованием QtQuick.Controls. Есть такой код:
Как видите, тупо красный прямоугольник. На компе запускается правильно, на андроиде тоже. Если добавляю кнопку из QtQuick.Controls :
То на ПК она отображается, а на андроиде просто белый прямоугольник. Стоит учесть, что qml файл находится в ресурсах. Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом. В чем тогда проблема? |
|
|
MishaUA |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
И еще вопрос:
Можно ли сигнал, который в qml файле коннектить к слоту из cpp файла? Только connect нужно сделать в самом cpp файле |
|
|
Trisch |
![]()
Сообщение
#8
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: ![]() ![]() ![]() |
И еще вопрос: Можно ли сигнал, который в qml файле коннектить к слоту из cpp файла? Только connect нужно сделать в самом cpp файле Да, можно. Это делается примерно так:
да, в этом и была проблема. Обновил драйверы видеокарты и заработало))) Следующая проблема с использованием QtQuick.Controls. Есть такой код:
Как видите, тупо красный прямоугольник. На компе запускается правильно, на андроиде тоже. Если добавляю кнопку из QtQuick.Controls :
То на ПК она отображается, а на андроиде просто белый прямоугольник. Стоит учесть, что qml файл находится в ресурсах. Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом. В чем тогда проблема? ну тут ты мог указать полный путь к QML файлу, тогда на компе оно будет работать из любого места. если файл QML берется из ресурсов, то это делается примерно так
|
|
|
MherX |
![]()
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 3.1.2013 Пользователь №: 3663 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ответе пожалуйста не этот вопрос кто знает
Trisch,Если на пк копирую exe в другую папку, то кнопка отображается, значит, exe не зависит от остальных файлов, которые в папке с проектом. В чем тогда проблема? Trisch, уже довольно много времени потратил на это не получается разобраться почему то на десктопе запускается а на андроиде нет То на ПК она отображается, а на андроиде просто белый прямоугольник. |
|
|
Iron Bug |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Андроид - не венда. 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.5.2025, 17:27 |