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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 [2] 3 4 ... 58
16  Qt / Общие вопросы / Re: помогите с ошибками(game dev) : Август 28, 2023, 20:18
подскажите пожалуйста как создать переменную доступную во всех классах Непонимающий Непонимающий Непонимающий
Так ведь это зависит от задачи. Если это глобальное свойство всех ваших классов, то нужно создать базовый класс, в котором объявить эту переменную, как статический член. А все ваши классы наследуете от этого базового класса.
Если это просто какая-то переменная, содержащая данные, используемые в объектах ваших классов, то - объявляете где-то просто глобальную переменную, а в модулях, в которых используете ее - extern ваша_переменная.
Либо объявляете класс с статическим членом в открытой области. Используете в остальных классах так: Вашкласс::вашапеременная.
Чтобы ограничить видимость этой переменной, можно извратиться - объявить статический член в приватной области. А все остальные классы, которые должны работать с ней, объявляете друзьями (friend class).
Но, на мой взгляд, из того, что я перечислил, только первый способ правильный.
17  Qt / Общие вопросы / Re: помогите с ошибками(game dev) : Август 25, 2023, 16:04
Два раза на одни грабли... (http://www.prog.org.ru/index.php?topic=33465.msg247268#msg247268)
Вы объявление от определения отличаете? Статический член не принадлежит классу. Его надо еще определить:
QVector<int> Global::settings;
18  Qt / Общие вопросы / Re: помогите разобраться с ошибкой : Август 24, 2023, 17:01
Вы объявление от определения отличаете?
19  Qt / Вопросы новичков / Re: Как написать функцию Length(QList *)? : Август 19, 2023, 14:26
Структура в C++ - это класс с открытыми по умолчанию членами ))
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 рублей", а хотелось бы за три))
Поэтому тему закрываю, как решенную.
22  Qt / Model-View (MV) / Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси : Май 29, 2023, 15:55
если мне не изменяет память то стайлщит через прокси стиль сделан - скорее всего некорректно проксирует вендовый стиль
юзай делегат хз
Про делегат я думал, правда, никогда не делал для заголовков. Но отказался - слишком накладно. Переопределять нужно будет paint, а это гимор еще тот...
23  Qt / Model-View (MV) / Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси : Май 29, 2023, 15:50
А если стиль устанавливать не для QTableView а для QHeaderView?

Код:
tableView->horizontalHeader()->setStyleSheet("QHeaderView::section { background-color: Gainsboro; }");
Не сработало.
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, и альтернативы инсталлятору не вижу. Разве что сборка из исходников.
26  Qt / Вопросы новичков / Re: Не перетаскиваются визуальные компоненты в окне мышкой : Май 14, 2023, 18:50
Просто поставьте из своего репозитория. Через apt-get.
А какая версия в репозитории Убунты?
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
Скомпилированную программу запускаем в одной терминальной сессии
Код:
$ ./virtcan
В другой сессии запускаем генерацию и передачу пакетов
Код:
$ cangen -v can0

Или наоборот:
Код:
$ ./virtcan 1
и
Код:
$ candump can0

30  Компиляторы и платформы / Linux / Re: Статическая привязка USB-устройств к портам : Февраль 27, 2023, 16:42
С причиной переподключения портов, вроде, разобрался - просадка по напряжению питания. Совсем забыл про эту проблему: когда запускал малину, пришлось искать блок питания и приличный usb-кабель. Подобрал 3-х амперный зарядник, вроде стабильно заработало. А потом подключил два usb-преобразователя и начались фокусы. Придется тратиться на блок питания))
Страниц: 1 [2] 3 4 ... 58

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