做过web前端开发的程序员必备的技能便是CSS,CSS强大快速。当发现qt支持类似css的功能时,是件令人兴奋的事情。
QWidgetw;
w.setStyleSheet("background:#cccccc");
便可以改变窗口的背景颜色。
再来看一个更让人兴奋的例子。
m_pBtnLogin = new QPushButton(this);
m_pBtnLogin->setFlat(true);
m_pBtnLogin->setText(tr("Login"));
m_pBtnLogin->setStyleSheet("QPushButton{border-radius:5px;color:white; font:12pt; background:#4270C0}"
"QPushButton:hover{background:#2761BD}"
"QPushButton:pressed{background:#1732DF}"
);
完全是CSS的写法,这样短短设置便可以实现一个三态(normal, hover pressed)的圆角边按钮。
因为setStyleSheet的参数是字符串,所以完全可以自己写一个css文件,然后通过读出文件内容到字符串的方法,来设置样式,这样就和web开发的做法接近了,可以不用重新编译程序便可以修改和调整UI外观,当然效率就会有损失。有了类似CSS的功能,换肤就相对容易了。但个人观点换肤实则是鸡肋,没用多少用户会真正去使用换肤,当然色盲和色弱的用户除外。