フォーカス矩形は、使用中の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_H
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());
これにより、スタイル シートが引き続き機能するようになります。
これを行う簡単な方法があればいいのですが、見つけられませんでした:)