似乎焦点矩形是由正在使用的QStyle(不要与样式表混淆)处理的。您可以编写一个QStyle子类并将其应用于您的QTabWidget。该子类应覆盖drawControl()方法,并在当前绘制焦点矩形时不执行任何操作。
该子类应该类似于以下内容:
NoFocusRectStyle.h
#ifndef NOFOCUSRECTSTYLE_H
#define NOFOCUSRECTSTYLE_H
#include <QWindowsVistaStyle>
class NoFocusRectStyle : public QWindowsVistaStyle
{
public:
NoFocusRectStyle();
protected:
void drawControl(ControlElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
};
#endif
NoFocusRectStyle.cpp
#include "NoFocusStyle.h"
NoFocusRectStyle::NoFocusRectStyle()
{
}
void NoFocusRectStyle::drawControl(ControlElement element,
const QStyleOption *option, QPainter *painter,
const QWidget *widget) const
{
if(element == CE_FocusFrame)
return;
QWindowsVistaStyle::drawControl(element, option, painter, widget);
}
在表单的初始化程序/构造函数中,您需要将自定义样式子类应用于选项卡小部件:
ui->tabWidget->setStyle(new NoFocusRectStyle());
这应该可以让您的样式表继续正常工作。
如果有更简单的方法就好了,但是我找不到 :)