我已经为LineEdit创建了CSS。
LineEdit.cpp
void MyLineEdit::initStyleSheet()
{
QString css = Css::instance().css( m_element );
setProperty( "style", "normal" );
setStyleSheet( css );
}
我有一个单独的.css文件用于样式:
MyLineEdit.css
....
MyLineEdit[style="Normal"]:focus
{
border: 1px solid red;
}
MyLineEdit[style="Normal"]:disabled
{
border: 1px solid gray;
background: gray;
}
现在有一个怪异的要求:MyLineEdit
应该有一个名为setNoFrame
的方法,在此函数中我们为其设置了另一个属性,并且该属性仅对状态disabled
有效
这就是我所做的:
MyLineEdit::setNoFrame()
{
setProperty("noFrame","true");
initSyleSheet();
}
这是我更新的.css数据
....
MyLineEdit[style="Normal"]:focus
{
border: 1px solid red;
}
MyLineEdit[style="Normal"]:disabled
{
border: 1px solid gray;
background: gray;
}
MyLineEdit[style="Normal", noFrame="true"]:disabled
{
border: none;
background: gray;
}
它无法正常工作,状态disabled
和noFrame = true
的边界仍然存在。在组合上述CSS的属性时是否出错?
答案 0 :(得分:1)
您真的很接近。试试
MyLineEdit[style="Normal"][noFrame="true"]:disabled
{
border: none;
background: gray;
}
从CSS2文档(其中Qt StyleSheets supports):
可以使用多个属性选择器来引用元素的多个属性,甚至可以多次引用同一属性。
此处,选择器匹配所有SPAN元素,这些元素的“ hello”属性的值恰好为“ Cleveland”,而其“再见”属性的值恰好为“ Columbus”:
span[hello="Cleveland"][goodbye="Columbus"] { color: blue; }