Создайте и укажите QLabel после нажатия мыши на другой QLabel в QT
Итак, я пытаюсь создать новый QLabel, добавленный в QList, и поместить его там, где я щелкнул другой QLabel, где я щелкнул.
Итак, вот мой код:
class CustomLabel : public QLabel
{
Q_OBJECT
public:
CustomLabel();
void mousePressEvent( QMouseEvent* event);
private:
QList<QLabel *> pointsL;
QList<QPoint *> points;
};
void CustomLabel::mousePressEvent(QMouseEvent *event)
{
points << new QPoint(event->pos());
pointsL << new QLabel(this);
pointsL.at(pointsL.size()-1)->setText("+");
pointsL.at(pointsL.size()-1)->setGeometry(QRect(points.at(points.size()-1)->rx(),, points.at(points.size()-1)->ry(), 1, 1));
}
Я также попробовал:
pointsL.at(pointsL.size()-1)->move(points.at(points.size()-1)->rx(), points.at(points.size()-1)->ry());
и это:
void CustomLabel::mousePressEvent(QMouseEvent *event)
{
points << new QPoint(event->pos());
pointsL << new QLabel(this);
pointsL.at(pointsL.size()-1)->setText("+");
pointsL.at(pointsL.size()-1)->move(*points.at(points.size()-1));
pointsL.at(pointsL.size()-1)->setTabOrder(pointsL.at(pointsL.size()-1), this);
}
Когда я нажимаю на Custom Label, ничего не происходит. Конструктор пуст.
Спасибо за любой ответ.
1 ответ
Новые виджеты, добавленные после того, как родительский элемент уже виден на экране, должны отображаться явно, если только они не находятся в макете.
В общем, вы должны добавить:
pointsL.back()−>show();