情况1:使用Q_OBJECT创建QWidget的子类并设置样式表-无效。

情况2:在没有Q_OBJECT的情况下创建QWidget的子类并设置样式表-按预期工作

情况3:使用Q_OBJECT创建QLabel的子类并设置样式表-按预期工作

如何理解这种行为?是否可以在情况1中使用样式表?

最佳答案

如果希望自定义QWidget子类支持样式表,则需要提供以下代码:
Qt代码:

void myclass::paintEvent(QPaintEvent *pe)
{
  QStyleOption o;
  o.initFrom(this);
  QPainter p(this);
  style()->drawPrimitive(
    QStyle::PE_Widget, &o, &p, this);
};


由wysota和Qt帮助提供。

当您不提供Q_OBJECT时,您的类没有元数据,因此被视为QWidget。

关于qt - 子类化QWidget和使用Q_OBJECT时,为什么样式表不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18344135/

10-13 07:59