Russian Qt Forum
Март 25, 2017, 14:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 82
1  Qt / Qt-инструментарий / Re: Кастомные слоты в дурацком дизайнере : Март 23, 2017, 16:31
Мне вообще не нравится Креаторный дизайнер, до сих пор пользуюсь автономным дизайнером.

А в чём там разница? Я думал автономный функционально не отличается. Всё время как-то на автомате использую встроенный в креатор.
2  Qt / Qt-инструментарий / Re: Кастомные слоты в дурацком дизайнере : Март 23, 2017, 16:29
Цитировать
MainWindow - только интегратор плагинов. Код и у плагинов, и у главного окна один и тот же для разных приложений. Приложения различаются только формами дизайнера и используемыми внешними данными.
что мешает написать простенький скрипт-генератор mainwindow.cpp?

Именно это и мешает - mainwindow.cpp один и тот же для всех программ. То есть из всех проектов ссылка на один и тот же файл идёт. Так надо.
3  Qt / Qt-инструментарий / Re: Кастомные слоты в дурацком дизайнере : Март 22, 2017, 13:29
Как-то слишком эмоционально, мне кажется или дизайнер разрабатывался, как дизайнер форм, а не редактор бизнес логики приложения?

Если это просто редактор форм - в нём не должно быть возможности соединения сигналов и слотов. Если есть такая возможность - значит это уже редактирование бизнес-логики. А оно сделано крайне уродливо.

Там ещё другая кривизна есть... если в креаторе открыты два или более проектов, то дизайнер по очевидной глупости его разработчика использует маршруты не активного проекта, а... первого сверху среди открытых. То есть, он ищет файл ui_mainwindow.h не в каталогах активного проекта, а в каталогах проекта, который в списке открытых самый верхний. При том, что активным может быть любой. Полный идиотизм.

4  Qt / Qt-инструментарий / Re: Кастомные слоты в дурацком дизайнере : Март 21, 2017, 22:40
А почему в коде не законнектить?

ПАТАМУШТА!!!...

Все объекты - кастомные плагины. MainWindow - только интегратор плагинов. Код и у плагинов, и у главного окна один и тот же для разных приложений. Приложения различаются только формами дизайнера и используемыми внешними данными. Соответственно все соединения между плагинами могут быть только внешними. Проще всего изначально было в дизайнере это сделать. Конечно надо бы свой редактор, но это сильно замедлило бы разработку - я такой редактор уже делал, влоб его использовать нельзя, а переделывать долго. С нуля делать ещё дольше. Дизайнер по идее делает всё, что надо, но до чего же криво он спроектирован. По-детски.
5  Qt / Qt-инструментарий / Кастомные слоты в дурацком дизайнере : Март 21, 2017, 21:16
В который раз уже с этим долбался... Надо в дизайнере соединить сигнал некоего объекта со слотом другого объекта. На самом деле, получателей сигнала 4 - то есть весь геморрой геморройнее в 4 раза. По какой-то идиотской недоработке добавленный слот получателя в табличном редакторе соединений не виден, и добавить его там никак нельзя. Есть описанная возможность только одна - включить режим визуального соединения кнопкой F4 или в меню, протащить линию от источника к приёмнику, в появившемся окне со списком сигналов и слотов нажать кнопку "Изменить...", в редакторе добавить новый сигнал или слот, и потом соединить. И вообще использовать новый слот далее в табличном редакторе.

Тут начинаются проблемы. Во-первых дело в том, что приёмники на форме перекрыты другими виджетами, и находятся вообще в середине стека. Поэтому визаульное соединение их не видит. Чтобы до них дотянуть линию, их надо предварительно вытащить наверх, дотащить линию, соединить, потом все объекты, которые над ними ниже, надо переместить наверх в нужном пордяке. Болван, который делал дизайнер, не допёр до возможности задавать хотя бы числом порядковый номер слоя в котором лежит объект... Руки бы оторвать только за это.

Но по необъяснимой причине у меня кнопки "Изменить..." обе постоянно не доступны. Я уже всё облазил, и пересобирал, и переqmakeал и... ничего не помогает. При этом проект то нормально собирается без единого warning, и всё работает (ну кроме тех соединений, которые я не могу сделать).

В общем, полез грязными руками и текстовым редактором Kate  в mainwindow.ui, и там добавил XML код для нужных соединений. После перезагрузки mainwindow.ui в дизайнер, не сразу, но после нескольких манипуляций с + и - в табличном редакторе они тоже появились. Правда в режиме F4 их флажки-подсказки появляются не там, где надо, а в углу - мне лень было прописывать их координаты. После сборки всё заработало как надо, здесь нет вопросов.

Причём добавление ручных слотов в дизайнере кое-где работает - но только для наследников QMainWindow - справа от формы, в редакторе объектов можно нажать правую кнопку на QMainWindow, и там нормально добавляются слоты и сигналы. Дебил, делавший дизайнер, почему-то не допёр сделать то же самое для любого объекта формы. И чтобы если такого сигнала или слота ещё нет в заголовке и исходнике объекта, то он сначала добавлялся автоматически. А если есть, то всё работало также, как и для QMainWindow.

Вопрос такой - кто-нибудь встречал может быть дизайнер для Qt Creator 4.0.1 с исправлением этих косяков? Может какой-нибудь кастомный, где добавлены нормальные функции редактирования? Или может быть патчи соответствующие? А то это угрёбище недоделанное периодически начинает бесить...
6  Qt / Qt Embedded / Можно ли сделать общий Java-модуль в QtCreator? : Февраль 13, 2017, 20:28
В нескольких приложениях есть одинаковый код в файле .java, через который Qt вызывает функции Android и наоборот, из Android вызываются функции приложений. Во всех приложениях этот код одинаковый, за исключением того, что в первой строке после package написано имя пакета - разумеется, у каждого приложения оно своё. Сейчас это просто копии файлов, отличающиеся одной первой строкой. Пока не надо там ничего менять, это терпимо. Но если придётся дорабатывать, то придётся править все копии. Разумеется, хочется вынести весь общий код в какую-то библиотеку, чтобы её просто подшить ко всем проектам. Чтобы в одном проекте она была в исходных текстах и компилировалась, а в остальных только использовалась. Но как сделать такую библиотеку на Java, да ещё и из QtCreator - я понятия не имею. И не ясно, как потом обращаться к этой библиотеке из C++. Кто-нибудь может помочь?
7  Qt / Qt Embedded / Re: Ministro или как лучше распространять библиотеки Qt : Февраль 02, 2017, 17:03
Цитировать
вроде бы можно собирать приложения статически
Они будут огромными. Сравнимо с объемом библиотек. Совсем чуток (в несколько раз) меньше.

Я делал статические приложения на десктопе - разница в 2-3 раза была. То есть, вместо 15 МБайт библиотек получалось 5-7 МБайт бинарник. Правда пока не ясно, можно ли вообще сделать статическое приложение для Android - для него даже основной модуль с main() собирается в .so библиотеку, то есть динамически связывается при запуске.
8  Qt / Qt Embedded / Re: Ministro или как лучше распространять библиотеки Qt : Февраль 02, 2017, 17:00
если задача сокращения объема скачивания не актуальна, то я не пойму смысла с отдельным общим каталогом

Ещё раз - скачивается каждое приложение по 7 МБайт по одному разу, а хранится в APK по 15 МБайт на каждое приложение постоянно. На 5 приложений будет храниться 45 МБайт. Но если библиотеки Qt в одном каталоге будут лежать, то будет храниться только 15 МБайт.
9  Qt / Qt Embedded / Re: Ministro или как лучше распространять библиотеки Qt : Февраль 02, 2017, 02:53
т.е. хочется заменить ministro на свой my_ministro ?
наверно смысл есть, как сделать не знаю, также интересно

Не, не хочется. Основное назначение Ministro - поддержка связи приложения с библиотеками Qt, включая их обновление при наличии исправлений. И автоматическая загрузка варианта, соответствующего аппаратной платформе. Хранение разделяемых библиотек для всех Qt-приложений - это у Ministro скорее побочный эффект, по необходимости. Иначе Ministro пришлось бы скачивать библиотеки заново для каждого поддерживаемого приложения.

Но мне нужно только и исключительно это, и без скачивания библиотек отдельно. Они у меня в .APK каждого приложения будут. Но я хочу, чтобы они извлекались в один каталог и оттуда работали.

Правда сейчас с удивлением прочёл в одном из обсуждений, что вроде бы можно собирать приложения статически и распространять закрытыми не нарушая GPL, и не предоставляя исходники. Якобы достаточно предоставить только ссылки на свои объектные модули, чтобы их можно было скачать. Надо разобраться, может вообще не потребуется тащить Qt-библиотеки.
10  Qt / Qt Embedded / Re: Ministro или как лучше распространять библиотеки Qt : Февраль 01, 2017, 16:22
правильно ли я понял, что если есть 2 программы и они весят со всеми либами пусть 30мб
тогда сейчас пользователь в обоих случаях скачает 30мб
и хочется скачать после установки первой программы только, например, 1 мб самой программы и не качать теже самые либы ?

Не совсем. Чтобы не качать два раза всё то же самое, достаточно использовать Ministro - тогда он будет скачивать нужные библиотеки только один раз. Но кроме скачивания, библиотеки Qt надо ещё хранить. Скачивается всё сжатое до 3-х раз, а вот хранятся библиотеки распакованные. Вот тут мне надо чтобы хранилась только одна копия библиотек Qt, а сколько раз они будут внутри APK скачиваться - по барабану, это доли копеек по стоимости. Сжатое в APK приложение сейчас около 7 МБайт - для скачивания это не существенно, это длина одного анимированного GIF-а с котятами в соцсетях. Сейчас у меня будут 3 приложения с общими библиотеками Qt, позже их станет 5, а в дальнейшем их может быть 10, а потом и 30 или больше. Скачивать их будут не одновременно, но хранить могут все одновременно. Не по 30 МБайт правда, но по 15 МБайт библиотек на каждое приложение - это уже дохрена получится. Ministro это тоже решает, библиотеки Qt хранятся в одной копии, но вот... не хочется связываться со сторонним приложением. Например, если по какому-то недоразумению меня вдруг забанят на Google Play (там сейчас говорят роботы банят за каждый безобидный чих), то не понятно, как будет Ministro оттуда устанавливаться на машины новых клиентов, если само приложение будет распространяться через другой сервис. Поэтому хочется избавиться от Ministro, но библиотеки хранить в одном экземпляре. Qt-приложения на Android умеют так библиотеки использовать, но не ясно как такое приложение инсталлировать.
11  Qt / Qt Embedded / Ministro или как лучше распространять библиотеки Qt : Январь 31, 2017, 16:42
Всё время считал, что есть два способа поставить Qt-приложение для Android:
1. сборка с библиотеками Qt, которые включаются в APK и дублируются при каждой установке гомогенных приложений, собранных с одной и той же версией Qt
2. сборка с использованием Ministro, который при установке приложения будет предложено установить чтобы он скачал и установил библиотеки.
Оба способа мне не нравились по ряду причин. Но сегодня заметил абзац в руководстве Qt, который почему-то раньше не отложился в долговременной памяти:
Цитировать
There are some special variables recognized by Qt which can be placed inside the manifest:

    android.app.use_local_qt_libs: If this is set to 1, Qt libraries are expected to be found on the target device. If it is 0, then libraries must be requested from the Ministro service.
    android.app.bundle_local_qt_libs: If set to 1, the Qt libraries are expected to be bundled as part of the APK. If set to 0, they are expected to be found in the /data/local/tmp/qt folder on the target device.
    Note: If use_local_qt_libs is 0, then this variable has no effect, since libraries are then requested through Ministro instead.

Вот это интересно особенно про android.app.bundle_local_qt_libs. То есть, можно по идее собрать одно своё приложение, при установке которого Qt-библиотеки будут заброшены в /data/local/tmp/qt, а при установке другого с такими же библиотеками они уже забрасываться туда не будут. Или будут, но это пофик - главное чтобы оттуда использовались. Для меня это идеальный вариант - и библиотеки будут разделяемые, и с Ministro связываться не надо.

Вопрос только - как сделать, чтобы при установке библиотеки Qt сначала из APK копировались в указанный каталог, затем происходило дальше всё как надо? Идея создать некий отдельный инсталлятор-приложение, которое только библиотеки туда закидывает - плохая идея. Надо чтобы они копировались куда надо при первой же установке.

Кто-нибудь разбирался с установкой APK? Как это можно сделать?
12  Qt / Пользовательский интерфейс (GUI) / Re: Что всё-таки не так с paintEvent() после QWidget::update()? : Январь 17, 2017, 17:54
5.6.1

4-й Qt в Android не работает.

ПС. Обожаю виджеты самописки - много геморроя убирают...

Это сарказм такой?... Геморроя ещё больше - совершенно не прозрачно когда вызываются методы для пропертей, когда что надо пересчитывать заново и т.д. Впрочем это уже к вопросу темы не имеет отношения - просьба не развивать.
13  Qt / Пользовательский интерфейс (GUI) / Re: Что всё-таки не так с paintEvent() после QWidget::update()? : Январь 17, 2017, 17:22
Да, ещё, кстати забыл упомянуть - это всё происходит в Android. В дизайнере на десктопе под Linux этот виджет рисует только фон, текст почему-то вообще не появляется (некогда сейчас разбираться). Но с QWidget и в дизайнере даже фона не было.
14  Qt / Пользовательский интерфейс (GUI) / Re: Что всё-таки не так с paintEvent() после QWidget::update()? : Январь 17, 2017, 16:56
Я же говорю - поменял QWidget на QFrame и использовал frameRect() - всё заработало.
А если сейчас обратно поменять на QWidget? Если не заработает, выкладывайте исходник этого виджета. Улыбающийся

Не заработает. Ничего менять не буду - уже другим занят. Не пришлю. Proprietary.  Улыбающийся
15  Qt / Пользовательский интерфейс (GUI) / Re: Что всё-таки не так с paintEvent() после QWidget::update()? : Январь 17, 2017, 16:53
Архив нужно приложить?

Нет, не нужно. Я же говорю - поменял QWidget на QFrame и использовал frameRect() - всё заработало.

Мало ли... во-первых, это у меня кастомный плагин, во-вторых, этот виджет привязан к QWidgetItem, лежащему на графической сцене.


Страниц: [1] 2 3 ... 82
Страница сгенерирована за 0.119 секунд. Запросов: 23.