通过stylesheet美化 基本的BoxModel都是可以通用的。也就是其他的控件大部分也可以,比如combobox也行。
下面很多属性都可以设置,不同的控件状态配置了不同的,免得重复
//普通的状态
QLineEdit
{
//边界1像素 实线 颜色rgb 或者border:none 没有边界
border:1px solid rgb(180, 180, 180);
//背景的颜色
background: rgb(230,230,230);
//边角4像素圆滑
border-radius: 4px;
}
//鼠标滑动到LineEditor上面的时候
QLineEdit::hover
{
//字体的颜色
color:green
border-color:rgb(50,480,40);
background-color:green;
}
//被禁用的时候
QLineEdit::disabled
{
}
2QlineEdit里面添加按钮图片。
方式1 通过在lineEdit里面 setLayout来设置一个QHboxLayout. layout添加一个stretch 和一个button.
QLineEdit* m_edit=new QLineEdit(this);
QSize editsize(200,30);
QSize btsize(30,30);
m_edit->setFixedSize(editsize);
QPushButton* m_bt=new QPushButton();
m_bt->setFixedSize(btsize);
QHBoxLayout* layout=new QHBoxLayout();
layout->setContentsMargins(0,0,0,0);
layout->setSpacing(0);
layout->addStretch();
layout->addWidget(m_bt);
m_edit->setLayout(layout);
m_edit->setTextMargins(0,0,m_bt->width()-1,0);
m_bt->setCursor(QCursor(Qt::PointingHandCursor));
方式2 自定义一个widget。添加LineEdit和PushButton 然后自己修改paintEvent描绘外边框。LineEdit->setFrame(false)让他不描绘frame
LineEdit->setFrame(false)
关键描绘边框
painter->setRenderHints(QPainter::Antialiasing|QPainter::HighQualityAntialiasing);
painter->setPen(QPen(SE_BG_PEN_COLOR,1));
painter->setBrush(SE_BG_BRUSH_COLOR);
painter->drawRoundedRect(rect(),SE_RECT_RADIUS,SE_RECT_RADIUS);