1.去掉選中時的虛線
#ifndef MYPROXYSTYLE_H
#define MYPROXYSTYLE_H
#include <QProxyStyle>
class MyProxyStyle : public QProxyStyle
{
public:
MyProxyStyle();
protected:
virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option,
QPainter * painter, const QWidget * widget = 0) const;
};
#endif // MYPROXYSTYLE_H
#include "myproxystyle.h"
MyProxyStyle::MyProxyStyle()
{
}
void MyProxyStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
if (PE_FrameFocusRect == element)
{
/// do not draw focus rectangle
}
else
{
QProxyStyle::drawPrimitive(element, option,painter, widget);
}
}
#include "mainwidget.h"
#include <QApplication>
#include "myproxystyle.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setStyle(new MyProxyStyle);
MainWidget w;
w.setWindowTitle("Test");
w.show();
return a.exec();
}
更改前的效果:
更改後的效果:
可以看出,選中時的虛線被成功去掉。
2.更改鼠標懸浮與選中時背景的樣式
爲程序添加如下央視表
QListView::item:hover {
border-radius: 5px;
background: #EEEEEE;
color: black;
}
QListView::item:selected {
border-radius: 5px;
background: #DDDDDD;
color: black;
}
更改前效果:
更改後效果:
可以看出更改了選中時背景的顏色,併爲背景添加了圓角。(注意最中間那張貓是鼠標懸浮時的效果)
(------完-----)