Size: a a a

2020 November 28

p

pinnokio in Qt
а вот без дебажной версии Qt подтвердить это было бы весьма затруднительно.
благо, она оказалось в 10 раз менее страшной (в терминах быстродействия), чем пугали на SOF или ещё где.
источник

p

pinnokio in Qt
*не знаю ЧЯДНТ, но подстегнуть отладочные символы из линукс-пакета у меня не получилось (или их просто "мало" в "стандартной" поставке к моей ОС?) и я решил пересобрать либу и добавить её в свои "Kits", это оказалось довольно просто и приятно;

перекопал свой код вдоль и поперёк (кроме места, на которое бы никогда не подумал грешить)))) )
перекопал QGraphicsScene, QGraphicsItem и QGraphicsView с их приватными классами,

теперь знаю чуть лучше, как работают события мыши в Qt ))

если кратко, то проблема заключалась в том, что после рефакторинга (кто бы мог подумать?) и переноса некоторого функционала по обработке ввода мыши из кастомного QGraphicsPixmapItem в наследника QGraphicsView, некоторые объекты на сцене перестали получать вызов mouseReleaseEvent.

а mousePressEvent срабатывал :)

тут ключевую роль играет именно понятие "mouse grabber" и то, как Qt работает со списком таких объектов.
только объект, который является mouse grabber'ом может получить доп. события после нажатия мышки: mouse move, double click и mouse release.

mouse grabber'ом становятся после QEvent::accept() и его аналогов.

после запуска с дебажной версией Qt я кинул бряк в интересующем меня mousePressEvent, только чтобы убедиться, что этот объект является mouse grabber'ом ( через внутренний приватный класс можно получить доступ к текущей QGraphicsScene и посмотреть список mouse grabber'ов и просто сравнить адрес(а))
но он не получает mouse release!!!

соотв, кто-то или что-то удаляет объект из списка в сцене.

ищем QGraphicsScenePrivate, ищем соотв. обработчики (QGraphicsScenePrivate::grabMouse(), QGraphicsScenePrivate::ungrabMouse()) ставим бряки в них, воспроизводим баг, смотрим стек вызовов.

в результате я обнаружил, что когда в приложении вообще появляется QEvent::MouseRelease, то у моего наследника QGraphicsView срабатывает отправка сигнала в родительский виджет (это вкладка, которая подрабатывает View из MVC), и она просит ... спрятать родителя объекта, для которого я ловил(пытался, ждал и надеялся)) ) mouseReleaseEvent.

соотв. обработчики QGraphicsItemPrivate::setVisibleHelper вызывают QGraphicsItem::ungrabMouse, который ведёт к "пропаже" события.
источник

AU

Abu Umar in Qt
pinnokio
*не знаю ЧЯДНТ, но подстегнуть отладочные символы из линукс-пакета у меня не получилось (или их просто "мало" в "стандартной" поставке к моей ОС?) и я решил пересобрать либу и добавить её в свои "Kits", это оказалось довольно просто и приятно;

перекопал свой код вдоль и поперёк (кроме места, на которое бы никогда не подумал грешить)))) )
перекопал QGraphicsScene, QGraphicsItem и QGraphicsView с их приватными классами,

теперь знаю чуть лучше, как работают события мыши в Qt ))

если кратко, то проблема заключалась в том, что после рефакторинга (кто бы мог подумать?) и переноса некоторого функционала по обработке ввода мыши из кастомного QGraphicsPixmapItem в наследника QGraphicsView, некоторые объекты на сцене перестали получать вызов mouseReleaseEvent.

а mousePressEvent срабатывал :)

тут ключевую роль играет именно понятие "mouse grabber" и то, как Qt работает со списком таких объектов.
только объект, который является mouse grabber'ом может получить доп. события после нажатия мышки: mouse move, double click и mouse release.

mouse grabber'ом становятся после QEvent::accept() и его аналогов.

после запуска с дебажной версией Qt я кинул бряк в интересующем меня mousePressEvent, только чтобы убедиться, что этот объект является mouse grabber'ом ( через внутренний приватный класс можно получить доступ к текущей QGraphicsScene и посмотреть список mouse grabber'ов и просто сравнить адрес(а))
но он не получает mouse release!!!

соотв, кто-то или что-то удаляет объект из списка в сцене.

ищем QGraphicsScenePrivate, ищем соотв. обработчики (QGraphicsScenePrivate::grabMouse(), QGraphicsScenePrivate::ungrabMouse()) ставим бряки в них, воспроизводим баг, смотрим стек вызовов.

в результате я обнаружил, что когда в приложении вообще появляется QEvent::MouseRelease, то у моего наследника QGraphicsView срабатывает отправка сигнала в родительский виджет (это вкладка, которая подрабатывает View из MVC), и она просит ... спрятать родителя объекта, для которого я ловил(пытался, ждал и надеялся)) ) mouseReleaseEvent.

соотв. обработчики QGraphicsItemPrivate::setVisibleHelper вызывают QGraphicsItem::ungrabMouse, который ведёт к "пропаже" события.
Всё-таки пишете на хабр
источник

AD

Android Developer in Qt
Всем привет!
У меня есть несколько таблиц.
имя каждой таблицы отображается в Combobox.
каждая таблица имеет столбец с именем name.

когда я выбираю одно из имен таблиц вCombobox и нажимаю кнопку, слово в LineEdit должно быть сохранено в столбце name в выбранной мной таблице

результат, которого я ожидал, не был....  ну Я написал этот код на основе информации, представленной в Интернете.

  QString  table =ui->comboBox->currentText();
  QString  name =ui->lineEdit->text();

        QSqlQuery qry;
        qry.prepare(QString("INSERT INTO %1 (name) VALUES (:name)").arg(table));
                    qry.bindValue(":name", ui->lineEdit->text());
 qry.exec();
источник

AD

Android Developer in Qt
если ошибки нет, почему бы не сохранить его в таблице?
источник

AD

A D in Qt
Вангую parameter count mismatch.
источник

AD

Android Developer in Qt
Нужно ли мне выбрать имя таблицы в combobox и ввести другой код, чтобы сохранить текст, введенный в Lineedit, в столбце с именем name?
источник

AD

A D in Qt
Android Developer
Нужно ли мне выбрать имя таблицы в combobox и ввести другой код, чтобы сохранить текст, введенный в Lineedit, в столбце с именем name?
#include <QDebug>
...
..
...
qDebug() << qry.lastError();
источник

AD

Android Developer in Qt
A D
#include <QDebug>
...
..
...
qDebug() << qry.lastError();
QSqlError("", "Parameter count mismatch", "")
QSqlError("", "Driver not loaded", "Driver not loaded")
источник

СЧ

Сергей Чурмин... in Qt
Дня доброго, блин вопрос большой но постараюсь уместится, смотри те есть два класса, один основной, второй вспомогательный, тобишь только и делает что отправляет запрос в бд и возвращяет строгую структуру, так вот сейчас в основном классе есть два концерта на отправку и приему, вместе с отправкой отправляется метка, а в приеме уже по метке обрабатывается структура, это плохо, так как в приеме уже около 1000 строк кода. Можно ли как то отправить не метку а функцию которую надо будет вызвать в случае удачного ответа?
источник

СЧ

Сергей Чурмин... in Qt
Тобишь допустим как бы я это делал в питоне somefunc(stringSQL, callback)
источник

m

mefest in Qt
Сергей Чурмин
Дня доброго, блин вопрос большой но постараюсь уместится, смотри те есть два класса, один основной, второй вспомогательный, тобишь только и делает что отправляет запрос в бд и возвращяет строгую структуру, так вот сейчас в основном классе есть два концерта на отправку и приему, вместе с отправкой отправляется метка, а в приеме уже по метке обрабатывается структура, это плохо, так как в приеме уже около 1000 строк кода. Можно ли как то отправить не метку а функцию которую надо будет вызвать в случае удачного ответа?
А разбить на функции?
источник

СЧ

Сергей Чурмин... in Qt
mefest
А разбить на функции?
Тогда коонектов много, тоже не хотелось бы, а принемаюшая со свичкейс и вызовом той или иной как крайний вариант
источник

СЧ

Сергей Чурмин... in Qt
Просто что то не когда не работал с колбеками в плюсах вот думал может решат мою сложность за одно и попробую
источник

КГ

Константин Громов... in Qt
Всем добрый день, подскажите, пожалуйста, есть ли аналоги Qt для написания программ на Java или может быть Qt вообще совместим с Java? В интернете нашёл информацию только по Swing. Спасибо!
источник

ТЗ

Тюлень Здоровенный... in Qt
Всем привет. Кто может помочь с эргономикой GUI?
Нужно перенести эту лабу из вэба на пк - http://strts-online.narod.ru/lab3.html
Сейчас такой интерфейс у меня, но он мне кажется убогим, а идей, как скомпоновать - нет.(
Не подкинете идею?)))
источник

RG

Renat Garaev in Qt
Константин Громов
Всем добрый день, подскажите, пожалуйста, есть ли аналоги Qt для написания программ на Java или может быть Qt вообще совместим с Java? В интернете нашёл информацию только по Swing. Спасибо!
Мобильное приложение? Яву можно в андроид вызывать из qt, хотя это не совсем просто
источник

КГ

Константин Громов... in Qt
Renat Garaev
Мобильное приложение? Яву можно в андроид вызывать из qt, хотя это не совсем просто
Десктоп
источник

DE

Denis Ermolenko in Qt
Константин Громов
Всем добрый день, подскажите, пожалуйста, есть ли аналоги Qt для написания программ на Java или может быть Qt вообще совместим с Java? В интернете нашёл информацию только по Swing. Спасибо!
Аналог QT под java - это JavaFX
источник

AS

Anatoly Shirokov in Qt
Denis Ermolenko
Аналог QT под java - это JavaFX
Аналог QML, если быть точнее
источник