Поиск
Показаны результаты для тегов 'qt'.
-
QT учеба курсы
firstvald опубликовал тема в Образование в области электроники
Ищу курсы по QT в Питере. авалон не предлагать :)))) -
С++ взаимодействие объектов
const опубликовал тема в Программирование
Привет. Не могу сам разобраться, в плюсах не силен. Как правильно (принято) реализовывать взаимодействие между объектами? Мой случай, условно (пишу на QT, ранее программа была написана на CBuilder6). Реализация на CBuilder 6. Программа на ПК обменивается через COM-PORT с МК и отображает его состояние. Протоколов обмена два (может быть больше). Реализованы протоколы через объекты protocol_1 и protocol_2, оба они имеют методы rcv(u8* byte, u16 sz) через которые принимают "сырые" данные. Этот метод реализует байт-стаффинг, подсчет crc и разбивает поток байт на сообщения вида typedef struct {u16 cmd; u8 data[];} msg_t, которые в свою очередь можно получить с помощью метода get_msg(msg_t * msg). Так же объекты имеют методы для передачи сообщений put_msg(msg_t * msg), которые их "готовят" (байт-стаффинг, crc) и передают. Далее, объект коммуникации comm, который содержит объекты comport, protocol_1 и protocol_2, реализует обмен с МК: 1. Прием реализован через call-back ф-ию: void com_rcv_cb(u8 * b, u16 sz) { if (protocol == 1) protocol_1.rcv(b, sz); if (protocol == 2) protocol_2.rcv(b, sz); } ф-ия передается объекту comport через его метод set_rcv_cb(com_rcv_cb). Выбор протокола: comm.select_protocol(int r){ protocol = r; } 2. Реализация передачи: void comm::send(msg_t * msg) { if (protocol == 1) protocol_1.put_msg(msg); if (protocol == 2) protocol_2.put_msg(msg); } Собственно передачу осуществляют объекты protocol_1 и protocol_2, для этого им передается указатель на ф-ию отправки данных в comport /* void comport::send(u8* byte, u16 sz) */: protocol_1.set_sender(comport.send), protocol_2.set_sender(comport.send). Все три объекта (comport, protocol_1 и protocol_2) объявляются в файле comm.cpp, но, как бы сказать, не в самом объекте comm. Все работает. Вопросов нет. Начал изучать QT с написания вышеописанной программы с несколько другим функционалом. Объекты protocol_1 и protocol_2 взял как есть. Для работы с COM-PORT взял объект QSerialPort. Но в этот раз все три объекта (serialport, protocol_1 и protocol_2) создаю в объекте comm. С приемом проблем нет, функцию приема прикрутил с помощью connect(serialport, &QSerialPort::readyRead, comm, comm::com_rcv_cb), упуская детали. Работает. А вот передать указатель на ф-ию отправки serialport::write в объекты protocol_1 и protocol_2 не получается. Видимо от того, что serialport создается в самом объекте comm. Думаю, если вынесу объявление объектов serialport, protocol_1 и protocol_2 в пространство файла comm.cpp (как было ранее) все получится. Но хотелось бы узнать какие еще варианты взаимодействия объектов имеются. Или в моем случае надо полностью менять подход в построении программы? -
Переключение языка ввода и внешний вид программы на Qt
grebenkoff опубликовал тема в Linux
Приветствую, уважаемые! Использую плату Raspberry Pi3, на Qt.5.15.11, в QT Creatore написал тестовое приложение на основе QWidget - кнопочка, EditBox, TextLabel, короче, хелловорлд. Компилировал на ПК в Ubuntu с помощью cross-compile toolchain. На Raspberry крутится Linux на основе Debian с графическим интерфейсом LXDE. Qt скомпилировано c поддержкой OpenGL. При запусках моей программки обнаружил следующее: 1. Если запустить программу от имени пользователя (Pi), то текст с клавиатуры можно вводить и по русски и по английски, переключение языка ввода нормально работает. Но если запустить от имени администратора (sudo), то печатает только английскими буквами и на нажатие комбинации переключения языка ввода (у меня Alt+Shift),программа не реагирует. 2. Внешний облик программы также зависит от того, запущена она с правами пользователя или с помощью sudo. Подскажите пожалуйста, как настроить ввод русских букв при запуске программы от имени администратора? А также, от чего зависит внешний вид программы Qt (разеры окна, вид рамки, высота шрифтов...), при запуске от имени различных пользователей? -
Qt - прокрутка части окна
Harvester опубликовал тема в Программирование
Имеется окно (виджет), в которое помещаются (QVBoxLayout) одна или две QLabel и неограниченное число QButton. Содержимое центрируется по вертикали. Когда кнопок становится слишком много появляется полоса прокрутки. Мне нужно изменить код так, чтобы QLabel всегда оставались на экране, а полоса прокрутки появлялась только только для кнопок. Я понимаю, что нужно взять два менеджера компоновки, а что с ними делать дальше - уже нет :( . Вот текущий код (то, что qt генерит из *.ui, с сокращениями): Виджеты добавляются в лэйаут menu_splitter. class Ui_dlgMenu { public: QVBoxLayout *verticalLayout; QScrollArea *scrollArea; QWidget *scr_wdg_contents; QVBoxLayout *verticalLayout_3; QVBoxLayout *menu_splitter; void setupUi(QWidget *dlgMenu) { dlgMenu->resize(272, 480); dlgMenu->setMaximumSize(QSize(272, 480)); verticalLayout = new QVBoxLayout(dlgMenu); scrollArea = new QScrollArea(dlgMenu); sizePolicy1.setHorizontalStretch(0); sizePolicy1.setVerticalStretch(0); sizePolicy1.setHeightForWidth(scrollArea->sizePolicy().hasHeightForWidth()); scrollArea->setSizePolicy(sizePolicy1); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); scr_wdg_contents = new QWidget(); scr_wdg_contents->setGeometry(QRect(0, 0, 268, 470)); verticalLayout_3 = new QVBoxLayout(scr_wdg_contents); menu_splitter = new QVBoxLayout(); verticalLayout_3->addLayout(menu_splitter); scrollArea->setWidget(scr_wdg_contents); verticalLayout->addWidget(scrollArea); } -
Небольшой вопрос по наследованию в C++ (Qt)
Harvester опубликовал тема в Программирование
Имеется класс виджета Qt: class GotoMenu : public QPushButton { Q_OBJECT public: GotoMenu(QWidget* parent = 0, bool handle_click = true); ~GotoMenu(); ... protected: void paintEvent(QPaintEvent* arg1); ... }; Согласно идеологии Qt при перерисовке виджета вызывается paintEvent(). Здесь вопросов нет. Теперь я создаю класс-наследник: class ComboElement : public GotoMenu { Q_OBJECT public: ComboElement(QWidget* parent = 0, const QString &var_combo = CommonData::_emptyString); ~ComboElement(); ... }; Правильно ли я понимаю, что если я не переопределю этом классе PaintEvent(), то при перерисовке этого виджета будет вызываться paintEvent() предка (GotoMenu)? -
Салют-ЭЛ24ОМ1 Qt+GUI
sweetpirate опубликовал тема в Отладочные платы
Здравствуйте. Имеется отладочная плата Салют-ЭЛ24ОМ1 ревю1.2 с процессорным модулем Салют-ЭЛ24ПМ2 рев.1.1 Использую стандартный загрузчик версии mcom02-salute-el24pm2-r1.0-1.1-om1-r1.2-uboot и образ linux-а mcom02-buildroot-v3.1.0-2019-09-27. Пытаюсь добавить в образ поддержку Qt для работы с GUI. При стандартной конфигурации при попытке вывести изображение с использование linuxfb ничего не происходит(только черный экран). Далее, пишут, что linuxfb является устаревшей технологией, тем более для платформ с GPU. Для этого рекомендуют использовать eglfs. Чтобы включить eglfs в buildroot необходим провайдер, который обеспечивает поддержку OpenGL. Если я правильно понимаю, то это должен обеспечить драйвер mali. Но ничего подобного в сборке я так и не нашел. Хотел бы узнать какие библиотеки необходимы для запуска графических приложений и вывода их на экран монитора по hdmi. ПС. Также пытался за пустить X.org но ничего не вышло, не видит дисплей.- 4 ответа
-
- arm
- салют-эл24ом1
-
(и ещё 2 )
C тегом:
-
Разработчики ABB Russia (Москва, м. Авиамоторная)
LessNik опубликовал тема в Предлагаю работу
АББ в России - крупная международная компания, лидер в области продуктов и технологий для электроэнергетики и автоматизации - объявляет об открытии двух вакансий: - Инженер-программист ПЛИС и микроконтроллеров https://hh.ru/vacancy/29343857 - Инженер-программист Embedded Linux и Qt https://hh.ru/vacancy/29441566 Резюме просьба высылать через hh.ru.- 2 ответа
-
- fpga
- микроконтроллеры
-
(и ещё 2 )
C тегом: