QCombox下拉框宽度调整

一.如图效果

   

 二、代码

   一定记得引用头文件#include<QAbstractItemView>,否则无法设置宽度,又无明显提示错在何处。

#include<QAbstractItemView>
void SerialPortWidget::initPortName()
{
    QString port_name="";
    QString space="";
    foreach(const QSerialPortInfo &portinfo,QSerialPortInfo::availablePorts())
    {
       port_name=portinfo.portName();      
       space.fill(' ',12-port_name.length());
       cmbPortName->addItem(port_name+space+portinfo.description());

    }
    //cmbPortName->setCurrentIndex(1);

    comboxDropDownFitWidth();

}

void SerialPortWidget::comboxDropDownFitWidth()
{
    int maxLen=0;
    int count=cmbPortName->count();
    for(int i=0;i <count;i++)
    {
        if(maxLen < cmbPortName->itemText(i).length())
        {
           maxLen = cmbPortName->itemText(i).length();
        }

    }

    int ptVal = this->font().pointSize();//获取字体的磅值
    cmbPortName->view()->setFixedWidth(maxLen*ptVal*0.75);//(字符数*每个字符的宽度(磅)*0.75)个像素
    
}
原文地址:https://www.cnblogs.com/ike_li/p/12418799.html