Создайте и укажите 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();
Другие вопросы по тегам