.h
#ifndef CCLEANLOOKSSTYLE_H
#define CCLEANLOOKSSTYLE_H
#include <QCleanlooksStyle>
#include "control_global.h"
class CONTROLSHARED_EXPORT CCleanlooksStyle : public QCleanlooksStyle
{
Q_OBJECT
public:
CCleanlooksStyle();
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
};
#endif // CCLEANLOOKSSTYLE_H
.cpp
#include "ccleanlooksstyle.h"
CCleanlooksStyle::CCleanlooksStyle()
{
}
void CCleanlooksStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const
{
switch (element)
{
case PE_FrameFocusRect:
{
break;
}
default:
{
QCleanlooksStyle::drawPrimitive(element, option, painter, widget);
break;
}
}
return;
}
像这样把你用的style作为基类派生一个新的style,然后专门在PE_FrameRect这里处理一下,最后把你要的控件设置该style。
注意这样写对应所有聚焦的虚线框都不画,如果你对整个app设置该style,该app就没有虚线框了,如果该派生style想只对QListWidget不要虚线框,你可以试试在过滤时对widget做个筛选:
case PE_FrameFocusRect:
{
QListWidget * pList = qobject_cast<QListWidget *>(widget);
if(pList)
{
break;
}
else
{
QCleanlooksStyle::drawPrimitive(element, option, painter, widget);
}
break;
}
不过我没试过,你可以去试试。