问题:写了一个QListView的item代理,本来以为三下五除二,分分钟搞定,结果Q_PROPERTY设置的样式表颜色不生效…
class MyListViewItemDelegate :public QObject, public QStyledItemDelegate
{
Q_OBJECT
Q_PROPERTY(QColor m_textColor1 READ getTextColor1 WRITE setTextColor1)
Q_PROPERTY(QColor m_textColor2 READ getTextColor2 WRITE setTextColor2)
原因:没有继承QWidget, 在Qt中,QWidget是所有用户界面元素的基类,所有用户界面元素都是从QWidget派生而来的。当设置样式时,必须继承QWidget样式才能被正确的应用和显示。
解决:简单加一下 public QWidget
class MyListViewItemDelegate :public QObject, public QWidget , public QStyledItemDelegate
{
Q_OBJECT
Q_PROPERTY(QColor m_textColor1 READ getTextColor1 WRITE setTextColor1)
Q_PROPERTY(QColor m_textColor2 READ getTextColor2 WRITE setTextColor2)
基础不牢地动山摇,好记性不如烂笔头!