【发布时间】:2013-09-28 16:12:16
【问题描述】:
好的,所以我要做的是创建一个添加到 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);
}
当我单击自定义标签时,没有任何反应。构造函数为空。
感谢您的任何回答。
【问题讨论】:
-
不要认为 QLabel 可以用作容器小部件,即它不能有另一个 QLabel 作为这样的孩子并显示它。这可能是新标签没有出现的原因。我不确定我是否完全理解你的情况。你试过吗? QGridLayout?鼠标事件需要由父 QWidget 处理。
-
我找到了解决问题的方法,但还是谢谢!