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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 4 5 [6] 7 8 ... 39
76  Qt / Работа с сетью / Re: WebEngine с нуля : Апрель 26, 2020, 16:19
Зачем вам этот VS, если есть нормальный и работающий MinGW? ...
Маленькая проблемка)). WebEngine не собирается под MinGW.
77  Qt / Работа с сетью / Re: WebEngine с нуля : Апрель 25, 2020, 05:47
Нужно установить msvc (вроде как, есть бесплатный вариант установки) той версии, под которую собран Qt.
78  Qt / Qt-инструментарий / Re: Можно ли сделать так, чтобы QtCreator не анализировал часть pro файла? : Апрель 24, 2020, 10:13
Ура! Заработало!
Как хоть удалось найти? Даже по прямому поиску qtc_run поисковик ничего внятного не выдает).
Хотел уже было в исходные коды креатора лезть, но не успел).
79  Qt / Qt-инструментарий / Re: Можно ли сделать так, чтобы QtCreator не анализировал часть pro файла? : Апрель 23, 2020, 16:36
Тогда можно попробовать сделать так: ...

Сделал). Эффект не такой, какой хотелось бы иметь. В этом случае с дополнительной переменной и проект анализируется, и сборка производится. Хотелось бы чтобы проект анализировался с одним набором переменных, а собирался с другим. Даже если настраивать для себя легковесную конфигурацию для разработки, для полноценной сборки все-равно придется переключаться в тяжеловесную. К тому же не всегда возможно донести этот подход до других пользователей), все хотят, чтобы всё работало "из коробки".
80  Qt / Qt-инструментарий / Re: Можно ли сделать так, чтобы QtCreator не анализировал часть pro файла? : Апрель 20, 2020, 15:32
Если эти "ненужные" части закомментировать в .pro файле, проект будет нормально загружаться в QtCreator?

Да). Эти части вызывают системные команды для получения информации git, svn, а также генерируют некоторые исходные файлы. В линуксе все происходит достаточно быстро, в винде подтормаживает.
81  Qt / Qt-инструментарий / Re: Можно ли сделать так, чтобы QtCreator не анализировал часть pro файла? : Апрель 16, 2020, 16:07
из описания непонятно - чем эти фичи полезны ?

Предполагается, что пользователи qmake знают, что это такое qmake features и чем они полезны).

Фитчи qmake - это относительно гибкий инструмент для расширения и настройки qmake под свои нужды. Здесь хорошо расписано http://blog.mgsxx.com/?p=1891.

Конкретно этот набор фитч мне удобен для организации разных проектов (комплексов), использующих одни и те же программные модули (компонентов).
Однотипное ведение проектных файлов позволяет быстро организовывать комплекс, состоящий из десятков и даже сотен компонентов.
Когда однотипное описание проектных файлов систематизировано и выделено в отдельные фитчи, в проектные файлы модулей сводятся к набору нескольких строк.

На вскидку, польза в этом:

1. Как правило, проектный файл компонента выглядит так, если это библиотека,

Код
TEMPLATE = lib
 
!load( include_files ) : error( Can not find feature \"include_files\" )
includeFiles( $${PWD}/../../src )
 

с файлом зависимостей

Код
LIBS *= -lmodule
 
INCLUDEPATH *= \
   $${PWD}/include \
 
DEPENDPATH *= \
   $${PWD}/include \
 
QT *= \
   core \
   gui \
 
DEPENDS *= \
   module2 \
   module3 \
 

или так, если это приложение,

Код
TEMPLATE = app
 
!load( include_files ) : error( Can not find feature \"include_files\" )
includeFiles( $${PWD}/../.. )
 
QT *= \
   core \
   gui \
   widgets \
 
DEPENDS *= \
   module \
 

Фитча include_files позволяет включить в проект все файлы из директории и ее поддиректорий (подобно cmake).
Фитча module_depends позволяет найти и применить все зависимости между модулями, определенными в переменной DEPENDS  (подобно cmake)

2. Сборка всех модулей происходит в единое место

Фитча complex_paths позволяет собирать модули одновременно разными комплектами в одном проекте независимо друг от друга.

3. Автоматический контроль версий.

Фитча auto_version формирует дополнительную информацию в модуле о текущей ревизии svn или git, дополняет приложения на Qt типовым диалогом "О программе" с информацией о версии и включенных модулях, их версиях и др.

4. Более внятный вывод сообщений

Фитча message_logging дополняет выводимые сообщения информацией о текущем проектном файле.

82  Qt / Qt-инструментарий / Можно ли сделать так, чтобы QtCreator не анализировал часть pro файла? : Апрель 16, 2020, 12:54
Для ведения проектов с помощью qmake разработана небольшая библиотека дополнительных фитч для qmake. Простой пример использования можно посмотреть здесь.

Некоторые из этих фитч, предполагают сбор информации о проекте - версия репозитория, зависимости между компонентами, генерация дополнительного кода. Во время загрузки проекта в QtCreator происходит разбор проектных файлов с помощью qmake, и функциональность этих фитч занимает достаточно ощутимое время (когда в проекте ~100 модулей и больше) и это немного раздражает)). К тому же на этапе анализа проекта эта функциональность не привносит никакой пользы, она нужна только на этапе сборки (точнее, на этапе выполнения qmake перед сборкой).

Можно ли сделать так, чтобы QtCreator не анализировал часть проектного файла при его загрузке?
83  Qt / Вопросы новичков / Re: Как перемещать элементы на форме в иерархии объектов формы? : Апрель 10, 2020, 08:35
справа показаны объекты, которые расположены на форме. как видно, виджет label находится посередине. как мне его переместить вправо?

Нет, не видно. Картинка не видна.
то есть в horizontal layout почему то по тупому расположены виджеты и как их менять местами не ясно.
Нужно изучить API, предоставляемый компоновщиками (layouts).
Можно менять порядок элементов с помощью методов вида insert...( int index,...)
Там же можно и выравнивание внутри элемента компоновки установить Qt::Alignment.
И много другого stretchFactor  и т.д.
84  Компиляторы и платформы / Linux / Re: Ликвидировать демона : Апрель 01, 2020, 08:35
Посмотрите в сторону QtService.
Как синхронно получилось))
85  Компиляторы и платформы / Linux / Re: Ликвидировать демона : Апрель 01, 2020, 08:34
Посмотрите в сторону Qt Service
86  Qt / Общие вопросы / Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? : Март 24, 2020, 11:24
Но мнения расходятся. Кто-то говорит плагнины не покажет, кто-то говорит покажет....

Есть библиотеки, которые подгружаются при старте приложения. Это обязательные библиотеки, без которых приложение не запустится.
Есть библиотеки, которые подгружаются и выгружаются в процессе работы приложения по мере необходимост. К ним относятся и pluggins. Это опциональные библиотеки, без которых приложение запуститься.

Любой инструмент покажет только библиотеки загруженные в текущий момент. Какого рода плагины нужны знает только разработчик ПО исходя их используемых функций - работа с картинками, с БД, со звуком и т.п.

Плагины Qt входят в состав дистрибутива и по умолчанию поиск их осуществляется относительно директории установки Qt. Если не поставить нужные плагины, то приложение может запуститься, а корректно работать может и не смочь).

В чем проблема поставить полный дистрибутив Qt со всеми плагинами? Много места занимают или что?
87  Qt / Общие вопросы / Re: Как узнать какие файлы нужны для запуска Qt приложения на голом виндусе? : Март 20, 2020, 16:43
Внедрите в приложение код

Код
C++ (Qt)
#include <string>
#include <map>
#include <vector>
#include <libloaderapi.h>
 
struct Module
{
   typedef HMODULE Handle;
   typedef ::std::string Name;
   typedef ::std::vector< Name > Names;
   typedef ::std::string Path;
 
   Handle m_handle;
   Path m_path;
   Names m_names;
 
   Module ()
       : m_handle(  )
       , m_path()
       , m_names()
   {
   }
};
 
struct Application
{
   typedef ::std::map< Module::Handle, Module > Modules;
   Modules m_modules;
 
   Application ();
   void init ( Module::Name name = Module::Name() );
};
 
 
Application::Application ()
{
   init();
}
 
void Application::init ( Module::Name name )
{
   Module::Handle handle = GetModuleHandleA( name.empty() ? LPCSTR() : name.c_str() );
   Module & module = m_modules[ handle ];
   for ( size_t i = 0; i < module.m_names.size(); ++i )
       if ( name == module.m_names[ i ] )
           return;
   module.m_names.push_back( name );
 
   if ( module.m_names.size() == 1 )
   {
       module.m_handle = handle;
 
       DWORD path_buffer_size = DWORD();
       DWORD path_size = MAX_PATH;
       while ( path_size && path_size >= path_buffer_size )
       {
           path_buffer_size += MAX_PATH;
           module.m_path.resize( path_buffer_size );
           path_size = GetModuleFileNameA( handle, &module.m_path.front(), path_buffer_size );
       }
       module.m_path[ path_size ] = '\0'; // case Windows XP. It is guaranteed that 'path_size < path_buffer_size' here.
 
       PIMAGE_DOS_HEADER dos_header = PIMAGE_DOS_HEADER( module.m_handle );
       if ( dos_header->e_magic != IMAGE_DOS_SIGNATURE )
           return;
 
       PIMAGE_NT_HEADERS nt_headers = PIMAGE_NT_HEADERS( LPBYTE( dos_header ) + dos_header->e_lfanew );
       if ( nt_headers->Signature != IMAGE_NT_SIGNATURE )
           return;
 
       DWORD virtual_address = nt_headers->OptionalHeader.DataDirectory[ 1 ].VirtualAddress;
       if ( virtual_address != DWORD() )
       {
           PIMAGE_IMPORT_DESCRIPTOR image_import_descriptor = PIMAGE_IMPORT_DESCRIPTOR( LPBYTE( dos_header ) + virtual_address );
           for( int i = 0; image_import_descriptor[ i ].Characteristics != DWORD(); ++i )
           {
               init( LPCSTR( LPBYTE( dos_header ) + image_import_descriptor[ i ].Name ) );
           }
       }
   }
}
 
void printApplication ( const Application & application )
{
   for ( const auto & pr : application.m_modules )
   {
       const Module & module = pr.second;
       printf( "%s\n", module.m_path.c_str() );
       for ( const auto & name : module.m_names )
           printf( "\t%s\n", name.c_str() );
   }
}
 

и вызовите где-нибудь

Код
C++ (Qt)
printApplication( Application() );
 

в консоли увидите список зависимостей.
88  Программирование / Алгоритмы / Re: Движок физики. Силы, Ньютон : Март 18, 2020, 08:40
Может и так). Отсутствие четкого понимания, что чем является и в чём измеряется мешает восприятию.

Код
C++ (Qt)
float brakeInertia = ...  // величина "гашения" задаваемая юзером
   // сила
   // мощность (работа в единицу времени)
   // процент от величины ...
   // ???
 
vec3 force = ...  // текущий вектор силы задаваемый юзером
   // здесь должен быть суммарный вектор всех сил, действующих на объект
   // с учетом сил тяжести и т.п.
 
vec3 cur_speed = body->getLinearSpeed();  // текущая скорость объекта
   // m*v^2/2 - кинематическая энергия
 
// вектор силы инерции (синий = черный - зеленый)
vec3 interia = cur_speed - force * dot(cur_speed, force) / force.lengthSquare();
   // это всё-таки составляющая вектора скорости, никак не сила
 
// применяем brakeInteria
if (brakeInertia > inertia.length())  // полное подавление
 interia = -interia;
else
inertia = -interia.normalized() * brakeInteria; // частичное подавление
   // что здесь происходит - совсем не ясно
   // здесь считается дополнительная сила?
   // что значит полное подавление?
 
// наверное, должно быть как-то так:
   // если brakeInteria дополнительная сила
   vec3 demp_force = -interia.normalized() * brakeInteria;
   // если brakeInteria процент от действующей силы (0..100)
   vec3 demp_force = -interia.normalized() * brakeInteria * force.lenght() / 100;
 
// общая сила, действующая на объект
   vec3 total_force = force + demp_force;
   // далее считаем кинематические характеристики на следующем шаге
 
   // если brakeInteria мощность, то компонента скорости перпендикулярная действию силы
   // на следующем шаге по времени, исходя из закона сохранения энергии, будет равна
   float under_root = interia.lengthSquare() - 2 / M * brakeInteria * dt
       // M - масса объекта, dt - шаг по времени
   vec3 orthogonal_velocity = under_root >= 0
       : interia.normalized() * sqrt( under_root );
       : -interia.normalized() * sqrt( -under_root );
 

Как без массы обходиться, даже если она константа мне не понятно, так как она является составной частью законов сохранения энергии, импульса и массы).
89  Qt / Работа с сетью / Re: Событие incomingConnection( int socket ) не происходит : Март 16, 2020, 16:13
Может, потому что метод должен быть:

Код
C++ (Qt)
void incomingConnection(qintptr socket)
90  Программирование / Алгоритмы / Re: Движок физики. Силы, Ньютон : Март 16, 2020, 15:56
Попробуем подойти более конкретно, разберемся почему в жизни велик едет как на средней картинке. Вот аттач, вертикальный (черный) вектор - начальная скорость, и вот теперь повернули руль по направлению зеленого вектора. Разложим черный вектор на 2 компоненты. На зеленую действует лишь небольшая сила трения (качения). А вот синий попадает под раздачу, на него действует мощная сила трения скольжения.

Трение качения может быть существенно сильнее трения скольжения. Система ABS в автомобилях, как раз не позволяет автомобилю скользить.
Для велика ещё одной силой может быть сила тяжести из-за его наклона (смещения центра тяжести) в момент поворота. Что хорошо видно в соревнованиях мотогонщиков, например.

Если нужна реальная физика, привлеките к работе физика-механика,
Рискну предположить что Вы никогда его не привлекали Улыбающийся Поверьте, рез-т будет плачевный. Да и какую "физику" мы хотим?

Привлекал и математиков и физиков. Результат разнонаправленный).

Все-таки требуется конкретнее сформулировать цель - чтобы было просто похоже или чтобы прям математическая модель поведения колеса, велика или чего-то ещё имитировалась?

Если нужно просто похоже, то для "физического" поведения кубика достаточно в первом приближении добавить силу, действующую на объект по нормали к целевому вектору движения, величина которой зависит от модуля угла между фактическим и целевым направлением F * sin(alpha). Поиграйте значением F, думаю, что подберете оптимальное.
За счет чего реально формируется такая сила можно не объяснять пользователю).

Иначе потребуется привлечение достаточно серьезных моделей, в которых, действительно, нет времени разбираться.
Но в поиске по ключевым словам "математическая модель движения велосипеда/машины" и т.п. выводится достаточно большое количество научных работ.
Страниц: 1 ... 4 5 [6] 7 8 ... 39

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