当前位置: 代码迷 >> QT开发 >> 无法更改button的颜色和buttontext的颜色,使用qstyle自己画pushbutton,在风格选项中设置的palette解决思路
  详细解决方案

无法更改button的颜色和buttontext的颜色,使用qstyle自己画pushbutton,在风格选项中设置的palette解决思路

热度:206   发布时间:2016-04-25 05:05:05.0
无法更改button的颜色和buttontext的颜色,使用qstyle自己画pushbutton,在风格选项中设置的palette
我要自己画一个button。

使用的qstyle的drawControl函数

button是画出来了的,可是我在风格选项中设置的调色板没用,无法更改button的颜色和buttontext的颜色。

请大家帮帮我。

下面是paintevent()函数中画button的代码

C/C++ code
void CommentWidget::paintEvent(QPaintEvent *e){    QPainter painter(this);    painter.save();    painter.setRenderHint(QPainter::Antialiasing);//开启边缘反锯齿    QSize size=this->size();    qDebug()<<size;QPalette palette=QPalette(Qt::white);    //画刷的活动颜色组    palette.setBrush(QPalette::Window,Qt::lightGray);//窗口背景颜色    palette.setBrush(QPalette::WindowText,Qt::black);//窗口前景颜色    palette.setBrush(QPalette::Base,Qt::white);    palette.setBrush(QPalette::AlternateBase,Qt::lightGray);    palette.setBrush(QPalette::Text,Qt::black);    palette.setBrush(QPalette::Button,Qt::white);//按钮颜色    palette.setBrush(QPalette::ButtonText,Qt::red);//按钮文字颜色//画底部按钮    QStyleOptionButton opt;    opt.initFrom(this);opt.text = "Reply";    opt.rect=QRect(size.width()-180,size.height()-70+10,80,50);    opt.state=QStyle::State_Enabled;    opt.fontMetrics=QApplication::fontMetrics();    opt.palette=palette;this->style()->drawControl(QStyle::CE_PushButton,&opt,&painter,this);painter.restore();}


------解决方案--------------------
从未DIY过按钮。CommentWidget父类是QWidget吧?
------解决方案--------------------
既然都自绘按钮了,自己绘边框,背景,字体就行了吧,想怎么画就怎么画,何必拘泥于style()->drawControl这个函数??
------解决方案--------------------
子类化QPushButton来实现自定义比较简单:http://blog.csdn.net/yiyaaixuexi/article/details/6706729
------解决方案--------------------
同时可以方便的利用Qss来实现你想实现的 更改颜色、和text颜色
  相关解决方案