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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 3 [4] 5 6
46  Qt / Qt-инструментарий / Re: QtCreator: как задать пути поиска исходных файлов (переключение по F4) : Март 04, 2021, 09:14
Вновь подниму вопрос. На дворе QtCreator v4.14.1.

Я сейчас поступаю так - получаю список директорий с сорцами, добавляю к ним делиметр (запятая) и вставляю в поле  Tools > Options > C++ > File Naming > Sources > Search paths. Это работает, но это убожеский вариант.
47  Qt / Установка, сборка, отладка, тестирование / Re: Сборка Qt 5.15 для Windows: использование pkg-config в configure.bat : Ноябрь 19, 2020, 16:18
У меня нет сейчас конкретной задачи, связанной с GStreamer. Я собираю Qt 5.15.1 из сорцов, поэтому рассматриваю потенциально полезные модули.

А так, GStreamer может быть еще одним backend'ом в соответствующих Qt классах.
48  Qt / Установка, сборка, отладка, тестирование / Сборка Qt 5.15 для Windows: использование pkg-config в configure.bat : Ноябрь 19, 2020, 11:38
Друзья, сходу не получается подцепить pkg-config при передаче параметров в configure.bat скрипт. Нужно что-то вроде этого:
Код:
  CONFIG += link_pkgconfig
  PKGCONFIG += gstreamer-1.0
Собственно, сейчас требуется собрать GStreamer-1.0 backend for QtMultimedia. Сам GStreamer предоставляет pkg-config файлы, естественно.

Fallback-вариант, полагаю:
Цитировать
Configure understands variable assignments like VAR=value on the command line.
Each uppercased library name (obtainable with -list-libraries) supports the suffixes _INCDIR, _LIBDIR, _PREFIX (INCDIR=PREFIX/include, LIBDIR=PREFIX/lib), _LIBS, and - on Windows and Darwin - _LIBS_DEBUG and _LIBS_RELEASE. E.g., ICU_PREFIX=/opt/icu42 ICU_LIBS="-licui18n -licuuc -licudata".
Т.е. нужно будет как-то так:
Код:
configure ... GSTREAMER=c:\gstreamer_installation_dir ...
и так для всех этих модулей:
  gstreamer
  gstreamer_app
  gstreamer_gl
  gstreamer_photography
и при условии, что хедеры и либы лежат там по стандартным путям. А если нет, то придется делать вызовы pkg-config для получения списка хедеров и либ. Вообщем, это не 2 строчки.
49  Qt / Установка, сборка, отладка, тестирование / make install: создание ссылки на h-файл из папки исходников вместо самого файла : Ноябрь 18, 2020, 20:18
В prebuild Qt5, или когда вы собрали Qt из исходников, при этом сборка происходила в папке рядом, а не в папке исходников (shadow build), и задействовали далее make install (пусть в "C:\Qt\Qt-5.15.1"),  то в "C:\Qt\Qt-5.15.1\include" будут находится скопированные из папки исходников заголовочные файлы. Требуется, чтобы вместо самих файлов были ссылки на соответствующие файлы из папки исходников, например:
"C:\Qt\Qt-5.15.1\include\QtCore\QBuffer":
Код:
#include "qbuffer.h"
А вот теперь в свою очередь "qbuffer.h" ссылается но соответствующий файл из папки исходников:
Код:
#include "..\..\Qt-v5.15.1-src\qtbase\src\corelib\io\qbuffer.h"
Полагаю, что такие ссылки генерируются при использовании configure опции -developer-build или при сборке в каталоге исходников (конкретно, Qt 4.8.7 вела себя именно так).

Да это создает зависимость от сорцов, но это все требуется на машине девелопера. Такая структура в т.ч. позволяет без лишних усилий переключаться между хедером и сорцом (F4 в QtCreator). В противном случае вам придется задавать пути поиска сорцов, при этом, например, в QtCreator (4.12) там задаются конкретные папки (т.е. нет рекурсивного поиска вглубь), подстановочные символы не поддерживаются. Вам придется задавать десятки папок.

Где пропаичить configure для этого?
50  Qt / Установка, сборка, отладка, тестирование / Re: Как узнать опции configure, с которыми были собраны pre-build пакеты Qt? : Ноябрь 18, 2020, 16:18
++! Thanks
51  Qt / Установка, сборка, отладка, тестирование / Как узнать опции configure, с которыми были собраны pre-build пакеты Qt? : Ноябрь 16, 2020, 19:24
Как узнать опции configure, с которыми были собраны pre-build пакеты Qt?
52  Qt / Установка, сборка, отладка, тестирование / Re: Перенос Qt5 в другой каталог : Ноябрь 14, 2020, 23:57
Вобщем, слегка проработал тему:

1. Изменить харкордные пути можно через Qt Installer Framework. Maintenance Tool как раз оттуда. Там скриптовые модули для кастомной обработки.

2. Спецом для Windows есть еще тулза windeployqt, она также должна уметь патчить.

Я все эти инструменты не использовал, ибо нужно разбираться.

3. Собственно, полагаю достаточным будет пропатчить вручную (всего то ~10 файлов).

4. Пермещение Qt, видимо, все же актуальная задача. И вот здесь https://github.com/lniccoli/qtrelocator  уже давно кто-то запилил консольную тулзу, сорцы которой выдранны из Qt-инсталлера. Она как раз только и делает, что патчит:
Код:
QtRelocator "E:\My New Location\Qt-v5.12.3-win32-x64-msvc2017" qt5
qmake она патчит не до конца.

Файлы, которые нужно было пропатчить в моем случае (Qt-v5.12.3-win32-x64-msvc2017):
bin:
2020-11-14  23:20         2,794,496 qmake.exe
2020-11-14  23:20         6,130,176 Qt5Core.dll
2020-11-14  23:20        14,041,088 Qt5Cored.dll
lib:
2020-11-14  23:20             1,424 Qt5AxBase.prl
2020-11-14  23:20             1,409 Qt5AxBased.prl
2020-11-14  23:20             1,499 Qt5AxContainer.prl
2020-11-14  23:20             1,485 Qt5AxContainerd.prl
2020-11-14  23:20             1,506 Qt5AxServer.prl
2020-11-14  23:20             1,492 Qt5AxServerd.prl
2020-11-14  23:20             1,382 Qt5PacketProtocol.prl
2020-11-14  23:20             1,365 Qt5PacketProtocold.prl
2020-11-14  23:20             1,425 Qt5QmlDebug.prl
2020-11-14  23:20             1,410 Qt5QmlDebugd.prl
2020-11-14  23:20             1,423 Qt5QmlDevTools.prl
2020-11-14  23:20             1,477 Qt5UiTools.prl
2020-11-14  23:20             1,465 Qt5UiToolsd.prl

Да, и начиная с Qt 5.14, Qt становится перемещаемой (-relocatable configure option, которая включена по умолчанию), т.е. она ищет плагины относительно QtCore, а не по хардкордным путям. Распространяемые бинари были собраны с этой опцией (кто скажет у кого >=5.14)?

53  Qt / Установка, сборка, отладка, тестирование / Re: Перенос Qt5 в другой каталог : Ноябрь 13, 2020, 22:54
Вновь подниму вопрос. Как (какой тулзой или сам) Maintenance Tool патчит загруженные бинари после того, как распаковал их в каталог установки? Например, я имею в Qt5Core.dll, qmake.exe и ряде prl-файлов строку, содержащую путь установки.
54  Qt / Мультимедиа / Бэкэнд QAudioInput/QAudioOutput в Qt5/Windows 7 : Ноябрь 13, 2020, 12:44
Во времена Qt4 классы QAudioInput/QAudioOutput имплементировались через Waveform Audio API (https://docs.microsoft.com/en-us/windows/win32/multimedia/waveform-audio-reference). Реализация там была какая-то тяжелая, нелогичная - системные коллбеки для получения звука пробрасывались через поток, в котором живут QAudioInput/QAudioOutput, что побуждало всю работу вести в отдельном высокоприоритетном потоке. Ну да ладно.

В Qt5 (5.12) при беглом просмотре я вижу плагинную систему для загрузки бэкэнда (Waveform Audio API, WASAPI, ALSA,..). Собственно, что там выбирается по умолчанию, и как принудительно задать желаемый бэкэнд, например, ALSA?

В принципе, тот же вопрос будет и для других платформ.
55  Программирование / Общий / Re: STL-compatible контейнеры с семантикой Qt's Implicit Sharing : Ноябрь 10, 2020, 22:28
Согласен с вашей логикой. По сути требования два: для определенной (математической) обработки - это выравнивание на 256 байт, для наполнения и общей обработки (типа заменить элемент) - это буфер char-ов (QVector<char>).
56  Qt / Qt-инструментарий / Re: Автоматическое форматирование кода : Октябрь 31, 2020, 10:11
А как для встроенного стиля (точнее, Qt-based и отредактированный с использованием табов, а не пробелов) добиться выравнивания не по открывающей скобке, а просто с регулярным отступом:
Код:
	
while (a ||
       b)

нужно:

while (a ||
    b)
Эта настройка находится на вкладке "Alignment" диалога редактирования стиля. Проблема в том, что при выставлении нужного отступа он не сохраняется.

QtCreator v4.12, но так было у меня всегда ... и в QtCreator v1.x.x.
57  Qt / Qt-инструментарий / QtAssistant (Qt5): убрать из табов информацию модуля : Октябрь 31, 2020, 09:14
В QtAssistant использую табы для открытых документов. Например, для QAbstractItemView заголовок таба выглядит так: "QAbstractItemView | Qt Widgets 5.12.3". Как убрать часть, соответствующую модулю (" | Qt Widgets 5.12.3")?

Я понимаю, что один и тот же документ может встречаться в разных модулях, соответственно, информация о модуле должна отображаться, и тем не менее.
58  Qt / Общие вопросы / A где QtDemo? : Октябрь 28, 2020, 19:11
В Qt4 была прога QtDemo. Есть ли она для Qt5, где? Я не нашел через Maintenance Tool, возможно, просто просмотрел.
59  Программирование / Общий / Re: Оптимальное хранение члена класса : Октябрь 27, 2020, 21:41
А просто три синглтона без всяких мап, соответственно, для CBasePrimitive, CModelPrimitive, CDetailPrimitive:
Код:
Polygons* poligonsInstance()
{
static auto result = new Polygons;
return result;
}

Polygons* poligonsInstance(const QString& name)
{
static auto result = new Polygons(name);  // или как там они создаются в зависимости от name/details
return result;
}

Polygons* poligonsInstance(int details)
{
static auto result = new Polygons(details);
return result;
}
Ну или если они должны быть в области видимости классов, то делать их static protected, соответственно. Эти синглтоны (Мейерса) инициализируются при первом обращении, thread-safe. Если указатель не может принимать нулевого значения по смыслу, то я использую во всех таких случаях ссылку. Т.е.:
Polygons& poligonsInstance(int details)
60  Программирование / Общий / Re: STL-compatible контейнеры с семантикой Qt's Implicit Sharing : Октябрь 25, 2020, 18:26
Да, нужен  QVector<char>, такой что первый байт всегда лежит по адресу, кратному 256 (или любому другому, задаваемому статически). Структура байт в векторе - это уже будет двумерный индекс.
Глянул в отладчике, да, "близок локоть да не укусишь". Выравнивание есть, но не видно как подлезть.

Ну а если "не по теме" Улыбающийся? Верную ли цель Вы ставите (выровненный QVector<char>) и стоит ли ее добиваться? С точки зрения "минимум переделок" - скорее всего да. Но если все делать чисто/кошерно (к чему Вы так явно стремитесь) - то скорее нет. Ведь операции с QVector<char>, хотя бы push_back, erase и.т.п. никак не поддерживают целостность выравниваемых структур.
Нужно, чтобы начало вектора было выровнено, далее программист сам решает, как ему обрабатывать данные в середине. Т.е., он будет читать их кусками по 256 байт, если конкретный обработчик требует выравнивания.

С невыровненным началом - неудобно, size()/begin()/operator[],... уже непосредственно неприменимы.

Страниц: 1 2 3 [4] 5 6

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