QPushButton {
border: 2px solid red;
height:24px;
width:100px;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
答案 0 :(得分:4)
我认为这里更好的方法是将QPushButton子类化并重新实现paintEvent。像这样
void PushButton::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
// Define pen
QPen pen;
pen.setWidth(4);
// Draw outer cover
pen.setColor(Qt::black);
painter.setPen(pen);
painter.setBrush(QColor(Qt::gray));
painter.drawRect(this->rect());
// Draw Inward arc
pen.setWidth(2);
painter.setPen(pen);
painter.setBrush(QColor(Qt::white));
int x = this->rect().x() - this->rect().width()/2;
int y = this->rect().y();
int w = this->rect().width();
int h = this->rect().height();
QRectF rectangle(x,y,w,h);
painter.drawRoundedRect(rectangle,w,h);
}
请记住,这只是一个示例,您应该考虑其他因素,例如小部件的大小以及向内固化的角度以及其他所有因素。