Доброго времени суток! У меня есть кастомный класс class Socket :

public QGraphicsItem, и стоит задача получать указатель на объект этого класса через вызов QGraphicsItem.
Я подумал, что очень удобно будет хранить указатель на себя же, в объекте Socket, в методе data(), как я и имя класса храню.
Пример в Конструкторе:

Socket::Socket(QGraphicsItem* parent, uint64_t id_, const Position pos)
{
// Set class name
setData(0, "Socket");

Но проблема в том, что QVariant не кушает указатели, либо я делаю что-то не то...
Можете подсказать, что делать в такой ситуации?

6 ответов

17 просмотров

Так ты можешь получить указатель на свой кастомный объект через каст qgraphicsitem_cast

Valder-Man Автор вопроса
Mr.Mait
Так ты можешь получить указатель на свой кастомный...

У меня дальше в коде происходит такая вещь QGraphicsItem* obj = itemAt(position); И потом где-нибудь в обработчике нажатий, я хочу нажать, мышкой, например, и получить указатель на объект. Как-то так: obj->data(1); Предположи по единице хранятся этот самый указатель. А что делать с qgraphicsitem_cast я, честно говоря, не очень понимаю...

Valder Man
У меня дальше в коде происходит такая вещь QGraph...

Можно проверить тип или пользовательские данные, поймёшь что это тот самый нужный класс и кастуешь его в кастомный. Если надо хранить прям указатель в qvariant, могу завтра подсказать как. Если не забуду

Valder-Man Автор вопроса
Mr.Mait
Можно проверить тип или пользовательские данные, п...

Окей, покопаю в сторону того, что вы посоветовали, спасибо!

Valder Man
Окей, покопаю в сторону того, что вы посоветовали,...

Вон пример тут есть как из qgraphicsitem кастовать в кастомный buttonitem https://doc.qt.io/qt-5/qgraphicsitem.html#data Там правда сразу указатель проверяется в if, но ты можешь сохранить в переменную своего класса. Если все удачно, указатель будет ненулевым Почитай про эту функцию https://doc.qt.io/qt-5/qgraphicsitem.html#qgraphicsitem_cast

Mr.Mait
Можно проверить тип или пользовательские данные, п...

Вот это самая уродливая система, которая нарушает принцип Лисковой.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта