我有一个背景梯度的QTabWidget和两个问题。

qt文档对此毫无帮助。谷歌也是。:-(
发布于 2012-11-06 04:08:07
焦点矩形似乎由正在使用的QStyle处理(不要与样式表混淆)。您可以编写一个QStyle子类并将其应用于您的QTabWidget。子类应该重写drawControl()方法,如果它当前正在绘制焦点矩形,则不做任何操作。
子类看起来如下所示:
NoFocusRectStyle.h
#ifndef NOFOCUSRECTSTYLE_H
#define NOFOCUSRECTSTYLE_H
#include <QWindowsVistaStyle> // or the QStyle subclass of your choice
class NoFocusRectStyle : public QWindowsVistaStyle
{
public:
NoFocusRectStyle();
protected:
void drawControl(ControlElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget = 0) const;
};
#endif // NOFOCUSRECTSTYLE_HNoFocusRectStyle.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);
}在表单的intializer/构造函数中,您可以将自定义样式子类应用于选项卡小部件:
ui->tabWidget->setStyle(new NoFocusRectStyle());这将允许您的样式表继续工作。
如果有一种更简单的方法来做这件事,那就太好了,但我找不到:)
发布于 2015-04-03 08:33:12
这条线是旧的,但也许这能帮助人们。
如果您不需要使用焦点,那么您可以通过选项卡小部件设置它:
ui->tabWidget->setFocusPolicy(Qt::NoFocus);
发布于 2015-01-07 07:11:56
可以通过在样式中添加下面的片段来删除焦点矩形:
QWidget {
outline: 0;
}它与QTabWidget的样式没有直接关系,但正如您所期望的那样工作。
https://stackoverflow.com/questions/13243510
复制相似问题