【问题标题】:How to create a QPushbutton with one side curved inward and other side flat in Qt如何在Qt中创建一侧向内弯曲而另一侧平坦的QPushbutton
【发布时间】:2019-02-05 21:42:48
【问题描述】:
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; 
}

这让我的一侧变圆,另一侧变平

我希望一侧有向内曲线,另一侧像平凹一样平坦,有没有办法实现这一点

【问题讨论】:

    标签: qt qtwidgets


    【解决方案1】:

    我认为这里更好的方法是将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);
    
    }
    

    请记住,这只是一个示例,您应该考虑其他因素,例如小部件的大小以及向内固化的角度以及其他所有因素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多