QT5实现QComboBox控件下拉框自适应文字宽度
需求描述
用QT5实现QComboBox控件下拉框自适应文字宽度
核心代码
int max_len = 0, v_len = 0;
for(int idx = 0; idx < ui->cbb_com->count(); idx++)
{
v_len = ui->cbb_com->itemText(idx).length();
if(max_len <= v_len) max_len = v_len; // 得到下拉框中内容最长值的长度
}
int pt_val = ui->cbb_com->font().pointSize(); // 获取字体的磅值
ui->cbb_com->view()->setFixedWidth(max_len * pt_val * 0.75); // 设置自适应宽度
详细代码
//搜索串口功能
void Dialog::on_btn_serch_clicked()
{
ui->cbb_com->clear();
//运行开始查找可用串口
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug() << info.description();
if(!info.isBusy()){//是否可用
ui->cbb_com->addItem(info.portName()+" #"+info.description()); //串口号下拉菜单,增加一个条目
}
//qDebug() << "串口搜索完成";
}
int max_len = 0, v_len = 0;
for(int idx = 0; idx < ui->cbb_com->count(); idx++)
{
v_len = ui->cbb_com->itemText(idx).length();
if(max_len <= v_len) max_len = v_len; // 得到下拉框中内容最长值的长度
}
int pt_val = ui->cbb_com->font().pointSize(); // 获取字体的磅值
ui->cbb_com->view()->setFixedWidth(max_len * pt_val * 0.75); // 设置自适应宽度
}