生活随笔
收集整理的這篇文章主要介紹了
QComboBox 仅在展开时显示图标
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解決方案兩種
重寫QComboBox 的 paintevent 事件
void ComboBox::paintEvent(QPaintEvent
*event
){QStylePainter
painter(this);painter
.setPen(palette().color(QPalette
::Text
));QStyleOptionComboBox opt
;initStyleOption(&opt
);opt
.currentIcon
= QIcon(); opt
.iconSize
= QSize();painter
.drawComplexControl(QStyle
::CC_ComboBox
, opt
);painter
.drawControl(QStyle
::CE_ComboBoxLabel
, opt
);}
使用QProxyStyle
class ComboBoxProxyStyle : public QProxyStyle
{
public:using QProxyStyle
::QProxyStyle
;void drawControl(QStyle
::ControlElement element
, const QStyleOption
*opt
, QPainter
*p
, const QWidget
*w
) const{if(element
== QStyle
::CE_ComboBoxLabel
){if (const QStyleOptionComboBox
*cb
= qstyleoption_cast<const QStyleOptionComboBox *>(opt
)) {QStyleOptionComboBox
cb_tmp(*cb
);cb_tmp
.currentIcon
= QIcon();cb_tmp
.iconSize
= QSize();QProxyStyle::drawControl(element
, &cb_tmp
, p
, w
);return;}}QProxyStyle::drawControl(element
, opt
, p
, w
);}
};
pComboBox
->setStyle(new ComboBoxProxyStyle(pComboBox
->style()));
總結
以上是生活随笔為你收集整理的QComboBox 仅在展开时显示图标的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。