问题描述
我正在尝试使用 CSS 为我的 QT 应用程序制作一个很酷的用户界面.
I'm experimenting a bit with CSS for making a cool user interface for my QT application.
我有这个问题:我有一个 QPushButton,当它处于焦点时,它上面有一个我想删除的矩形.这是一些屏幕截图:
I have this problem: I have a QPushButton and when it is on focus it has a rectangle on it that I want to remove. Here some screen-shot:
我尝试添加一些东西(背景色、文字装饰等)
I have tried to add something (backgroundcolor, text-decoration, etc)
QPushButton:focus
但它一直在突出显示..
but it keeps on highlighting..
一些提示?
这里是 QPushButton css 代码:
here is the QPushButton css code:
QPushButton
{
color: #b1b1b1;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
border-width: 1px;
border-color: #1e1e1e;
border-style: solid;
border-radius: 6;
padding: 3px;
font-size: 12px;
padding-left: 5px;
padding-right: 5px;
}
QPushButton:pressed
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
}
QPushButton:hover
{
border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}
QPushButton:focus {
/*background-color: red;*/
}
ps.我在 Ubuntu 12.04 和 Qt 4.8 上,我正在使用这个奇妙的 css:http://www.yasinuludag.com/darkorange.stylesheet
ps. I'm on Ubuntu 12.04,with Qt 4.8 and I'm using this wonderfull css: http://www.yasinuludag.com/darkorange.stylesheet
推荐答案
突出显示的矩形可能是 QStyle::PE_FrameFocusRect
样式.摆脱它的唯一方法是实现自定义样式.幸运的是,Qt 提供了一种仅实现代理的方法,它在一般情况下使用另一种样式.对于您要实现的焦点矩形:
The highlighted rectangle may be the QStyle::PE_FrameFocusRect
styling. The only way to get rid of it is by implementing a custom style. Fortunately, Qt provides a way to implement just a proxy, which uses another style in the general case. For the focus rectangle you'd implement:
class Style_tweaks : public QProxyStyle
{
public:
void drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const
{
/* do not draw focus rectangles - this permits modern styling */
if (element == QStyle::PE_FrameFocusRect)
return;
QProxyStyle::drawPrimitive(element, option, painter, widget);
}
};
qApp->setStyle(new Style_tweaks);
这篇关于QT - CSS:焦点装饰的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!