1

好的,所以我要做的是创建一个添加到 QList 的新 QLabel,并将其放在我单击的另一个 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);
    }

当我单击自定义标签时,没有任何反应。构造函数为空。

感谢您的任何回答。

4

1 回答 1

0

在父级已经在屏幕上可见之后添加的新小部件应显式显示,除非它们在布局中。

所以基本上你应该添加:

pointsL.back()−&gt;show();
于 2013-09-28T23:36:43.943 回答