我是从QLabel类派生的。我想重新定义一些事件(例如mousePressEvent和paintEvent)。但在这种情况下,QLabel派生类(例如文本)的内容是不可见的。 SetEnabled和SetVisible没有帮助。你能告诉我为什么标签的客户区域是不可见的吗?(但事件的反应是可以的)。
class PaintRect : public QLabel {
public:
explicit PaintRect(QWidget *parent = 0);
/*
private:
void paintEvent(QPaintEvent *ev);
void mousePressEvent(QMouseEvent *ev);
*/
};
如果取消注释事件defenition并创建对象和show()它们,对象的客户区域是不可见的。
答案 0 :(得分:1)
也许您需要从PaintRect构造函数中调用QLabel构造函数?
或者您可能需要从PaintRect的paintEvent中调用父级的paintEvent。
答案 1 :(得分:0)
谢谢大家!我明白为什么标签的客户区域是看不见的。我重新定义了一个没有代码的paintEvent。有两种方法:调用基类绘制来绘制文本和oters,或者在重新定义的paintEvent中执行。