在QT中的另一个QLabel上按下鼠标后创建并指定QLabel

时间:2013-09-28 16:12:17

标签: qt events mouse qlabel

好的,我正在尝试做的是创建一个新的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);
    }

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

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

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

所以基本上你应该添加:

pointsL.back()−>show();