0

我有一个 qlabel 小部件,我正在覆盖 mouseReleaseEvent() 它工作但不正确它只接受小部件高度一半的 mouseReleaseEvent,就像在 100% 高度的比例中它只适用于 40% 我的意思是它没有't 覆盖整个 qlabels 的正方形(100x100)区域。

这是在 MAIN.CPP

QLabel sample(&Parent);//parent is just QWidget object
sample.resize(89,89);
sample.move( (Parent.width()/2 - sample.width()/2), (Parent.height()/2 - sample.height()/2));
sample.setStyleSheet("QLabel{background-color:red;}");

label mylabel(&Disc);
sample.setMouseTracking(TRUE);

这是在 LABEL.CPP 中

void label::mouseReleaseEvent(QMouseEvent *event)
{
    QMessageBox msgBox;
    msgBox.setText("Clicked()");
    msgBox.exec();
}

似乎没有什么太大的问题,但它不起作用。

谢谢!

4

1 回答 1

4

问题的一部分是您正在创建“QLabel”而不是“标签”。所以当然 QLabel 在鼠标释放时不会做任何事情。在子类中,鼠标释放对我来说非常好:

#include <QtGui>

class Label : public QLabel
{
protected:
    void mouseReleaseEvent(QMouseEvent *)
    {
        qDebug() << "released";
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Label label;
    label.setText("Hello");

    label.show();
    return app.exec();
}

看起来您的标签(不是 QLabel,而是子类)可能显示在其他东西后面。如果是这种情况,您应该使用 QLayout。

于 2012-05-28T17:00:42.250 回答