QComboBox的文字居中,下拉选项实现起来非常简单,但是本身的控件文本框默认是靠左的,想让他居中非常费劲,网上找到的一些方法都特别复杂,最后实现出来或多或少都有问题,没能完全满足我的需求。但最后终于找到一篇可以实现的了,虽然代码我也没太理解,但是效果不错。这里先感谢一下这篇文章:QComboBox文字居中的一种解决办法
实现方式
然后呢,他主要的实现方式是QComboBox控件重载paintevent,光是这一步就可以实现功能了。逻辑大概是重新绘制吧。
void CenterComboBox::paintEvent(QPaintEvent *ev)
{
// 该代码是Qt默认实现,直接拷贝一份
QStylePainter painter(this);
painter.setPen(palette().color(QPalette::Text));
// draw the combobox frame, focusrect and selected etc.
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
if (currentIndex() < 0)
opt.palette.setBrush