Просмотр сообщений
|
Страниц: 1 [2] 3 4 ... 58
|
16
|
Qt / Общие вопросы / Re: помогите с ошибками(game dev)
|
: Август 28, 2023, 20:18
|
подскажите пожалуйста как создать переменную доступную во всех классах Так ведь это зависит от задачи. Если это глобальное свойство всех ваших классов, то нужно создать базовый класс, в котором объявить эту переменную, как статический член. А все ваши классы наследуете от этого базового класса. Если это просто какая-то переменная, содержащая данные, используемые в объектах ваших классов, то - объявляете где-то просто глобальную переменную, а в модулях, в которых используете ее - extern ваша_переменная. Либо объявляете класс с статическим членом в открытой области. Используете в остальных классах так: Вашкласс::вашапеременная. Чтобы ограничить видимость этой переменной, можно извратиться - объявить статический член в приватной области. А все остальные классы, которые должны работать с ней, объявляете друзьями (friend class). Но, на мой взгляд, из того, что я перечислил, только первый способ правильный.
|
|
|
20
|
Qt / Дополнительные компоненты / Re: QSerialPort - странный баг (?)
|
: Июль 01, 2023, 13:15
|
Итого: В случае, если WriteFile() фейлится, то буфер writeBuffer, естественно, не очищается и вызов QSP::write() будет постоянно добавлять данные в writeBuffer пока память RAM не скушается. Нужно всегда обрабатывать ошибки из порта, т.е. переоткрывать порт (как минимум) при первой же возникшей ошибке. Появилась необходимость уточнить этот утверждение. На мой взгляд, не всегда нужно переоткрывать порт: например, при получении ошибки QSerialPort::OpenError - зачем это делать, если порт всего лишь говорит, что он уже открыт. Поэтому у меня вопрос - при каких ошибках, генерируемых QSerialPort, требуется переподключение? Ну, или наоборот - какие не требуют?
|
|
|
21
|
Qt / Model-View (MV) / Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси
|
: Май 29, 2023, 19:40
|
Наверное, можно констатировать, что в Windows: - не работает роль Qt::BackgroundRole в методе QAbstractTableModel::headerData (что-то там не так с использованием палитры). Это самый грустный вывод((; - весьма криво отрабатывают стили при использовании setStyleSheet. Тем не менее есть обходной путь с подбором свойств стилей. Правда, в виду слабой поддержки CSS, получить желаемый результат полностью не удается (например, нет теней box-shadow, а без них заголовок остается плоским). Ну, и остается вариант с делегатом, в котором можно сделать все, что хочешь. "Но за 5 рублей", а хотелось бы за три)) Поэтому тему закрываю, как решенную.
|
|
|
24
|
Qt / Model-View (MV) / [Решено] Проблемы с QTableView::resizeColumnsToContents при использовании прокси
|
: Май 29, 2023, 10:48
|
Коллеги, обнаружились проблемы с использованием subj при переключении от исходной модели к QSortFilterProxyModel: ширина колонок в табличном вьюшнике устанавливается некорректно (шире, чем должно быть). Это происходит в Win 10, Qt 5.13.0. В linux не проверял, но догадываюсь, что там-то будет все хорошо)) Причина обнаружилась в стиле с цветом фона заголовков, который я устанавливаю для таблицы: C++ (Qt) tableView->setStyleSheet("QHeaderView::section { background-color: Gainsboro; }");
Путем экспериментов нашел, что если в стиль добавить дополнительно еще какие-нибудь свойства (далеко не всякие!), например: C++ (Qt) tableView->setStyleSheet("QHeaderView::section { background-color: Gainsboro;" "border: 0px solid #6c6c6c; }");
то ширина колонок устанавливается корректно. Понимаю, что экстрасенсы в отпуске или уехали за бугор, но, может, есть какие-нибудь предположения? Если появится желание самим попробовать, могу выложить компилируемый пример.
|
|
|
25
|
Qt / Вопросы новичков / Re: Не перетаскиваются визуальные компоненты в окне мышкой
|
: Май 15, 2023, 21:57
|
Ну как это не важно. Есть релизы, в том числе и LTS, в которых есть ошибки в qtserialbus, для меня существенные (например, 5.12.2, 5.13.1). А в Убунте: sergek@Home:~$ sudo apt update sergek@Home:~$ apt-cache policy qt5-default qt5-default: Установлен: (отсутствует) Кандидат: 5.12.8+dfsg-0ubuntu2.1 Таблица версий: 5.12.8+dfsg-0ubuntu2.1 500 500 http://ru.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages 500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages 5.12.8+dfsg-0ubuntu1 500 500 http://ru.archive.ubuntu.com/ubuntu focal/universe amd64 Packages Я поэтому остановился на 5.13.0, и альтернативы инсталлятору не вижу. Разве что сборка из исходников.
|
|
|
27
|
Компиляторы и платформы / Linux / Re: [Решено] Использование плагина VirtualCAN
|
: Май 06, 2023, 13:41
|
Кстати, коллеги, может, кому-нибудь пригодится. Железку, через которую я хотел подключиться к шине зовут USR-CANET200. Если кто-нибудь захочет с ней работать, имейте в виду, что она передает в сеть TCP/IP не фрейм CAN, свой пакет со структурой: длина (1 байт), ID (4 байта), данные (8 байт). Длина этого фрейма - 13 байт (вместо 16 стандартных).
|
|
|
28
|
Компиляторы и платформы / Linux / Re: Использование плагина VirtualCAN
|
: Март 29, 2023, 11:12
|
Чтобы все работало, как я хотел, нужно использовать плагин для Linux сокета (вместо плагина "virtualcan" для виртуального подключения): C++ (Qt) QString plugin = "socketcan";
Почему так - устройство виртуальное (vcan), а работает с плагином для реального железа, объяснить не берусь. Хотя, с другой стороны, почему нет?
|
|
|
29
|
Компиляторы и платформы / Linux / [Решено] Использование плагина VirtualCAN
|
: Март 27, 2023, 20:31
|
Коллеги, осваиваю шину CAN и, пока едет железка конвертера CAN-Ethernet, пробую работать с виртуальной шиной и плагином Qt virtualcan. Сделал тестовую программу (надергал кусочков из гуевого примера), программа запускается в командной строке в двух режимах - чтения (запуск ./virtcan без параметров) и передачи фреймов данных в виртуальную шину can0 (запуск с любыми параметрами, например ./virtcan 1). Если в разных терминальных сессиях запустить программу на запись в одной сессии и на чтение в другой, то все работает отлично - один экземпляр пишет, другой принимает. Но проблема в том, что моя программа наотрез отказывается работать с утилитами командной строки из пакета can-utils ( https://sgframework.readthedocs.io/en/latest/cantutorial.html). Т.е. если передавать в виртуальную шину данные из программы, а пытаться принимать утилитой candump, или, наоборот, передавать утилитой cangen или cansend и пытаться принимать программой, то это взаимодействие не работает. Можете подсказать, по какой причине? При этом линуксовые утилиты, как и мой пример, прекрасно передают данные между собой. Во вложении имеется мой тестовый пример, в архиве есть скрипт vcan.sh для создания виртуального устройства can0. Работаю я с Qt 5.13.0, Linux Home 4.19.57-v7+ armv7l (малина 3b+). Если кому-либо захочется повторить, то в linux нужно установить утилиты: $ sudo apt install can-utils После этого надо создать виртуальное устройство can0: $ chmod +x ~/vcan.sh $ ~/vcan.sh Скомпилированную программу запускаем в одной терминальной сессии В другой сессии запускаем генерацию и передачу пакетов Или наоборот: и
|
|
|
30
|
Компиляторы и платформы / Linux / Re: Статическая привязка USB-устройств к портам
|
: Февраль 27, 2023, 16:42
|
С причиной переподключения портов, вроде, разобрался - просадка по напряжению питания. Совсем забыл про эту проблему: когда запускал малину, пришлось искать блок питания и приличный usb-кабель. Подобрал 3-х амперный зарядник, вроде стабильно заработало. А потом подключил два usb-преобразователя и начались фокусы. Придется тратиться на блок питания))
|
|
|
Страниц: 1 [2] 3 4 ... 58
|
|
|