QT drag and drop - Создание временного QLabel с использованием qobject_cast - PullRequest
0 голосов
/ 27 января 2011

Я пытаюсь дать пользовательский класс, который наследуется от QLabel, чтобы он был перетаскиваемым.С этой целью я пытаюсь создать временную копию класса в текущей позиции мыши, используя следующий код внутри класса mousePressEvent:

QLabel *child = qobject_cast{QLabel*}(this->childAt(event->pos()));</p> <p>NOTE: this line has carrots instead of brackets, but stack overflow interprets it and takes it out</p> <pre><code>if (!child) return;

Ребенок никогда не создается, и я не могу понять, почему.Есть идеи?

1 Ответ

2 голосов
/ 27 января 2011

Если ваш код в вашем классе QLabel, childAt() - неправильная функция. Это вернет дочерний виджет, содержащийся в вашем ярлыке. Не похоже, что это то, что вы пытаетесь сделать, но поправьте меня, если я неправильно понимаю.

Объект, который вы хотите скопировать, - this, но «копирование» может иметь много значений в c ++, и я не уверен, что именно вы пытаетесь сделать. Возможно, вам придется реализовать его самостоятельно, возможно, с помощью метода clone(), который создает новый экземпляр вашего класса и заполняет значения, которые необходимо воспроизвести.

Я подозреваю, однако, что есть лучший способ реализовать функцию перетаскивания, которую вы ищете без копии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...