需要自定义类ComboBoxEx,派生自QComboBox。
头文件:
源文件:
#include "comboboxex.h"
ComboBoxEx::ComboBoxEx(QWidget *parent)
: QComboBox(parent)
#ifdef detail
QFont font;
//设置文字字体
font.setFamily("宋体");
//设置文字大小为50像素
font.setPixelSize(50);
//设置文字为粗体
font.setBold(true); //封装的setWeight函数
//设置文字为斜体
font.setItalic(true); //封装的setStyle函数
//设置文字大小
font.setPointSize(20);
//设置文字倾斜
font.setStyle(QFont::StyleItalic);
//设置文字粗细;enum Weight存在5个值
font.setWeight(QFont::Light);
//设置文字上划线
font.setOverline(true);
//设置文字下划线
font.setUnderline(true);
//设置文字中划线
font.setStrikeOut(true);
//设置字间距%
font.setLetterSpacing(QFont::PercentageSpacing, 300); //300%,100为默认
//设置字间距像素值
font.setLetterSpacing(QFont::AbsoluteSpacing, 20); //设置字间距为100像素
//设置首个字母大写;跟参数有关,也可以设置全部大写AllUppercase
font.setCapitalization(QFont::Capitalize);
#else
this->setFont(QFont("Microsoft Yahei", 10));
#endif
void ComboBoxEx::adjustItemWidth()
//qDebug() << ft.family() << ft.pointSize() << ft.pixelSize();
QFontMetrics fm(this->font());
QRect rect;
int max_len = 0;
for (int i = 0; i < this->count(); i++)
rect = fm.boundingRect(this->itemText(i)); //获得字符串所占的像素大小
if (max_len < rect.width())
max_len = rect.width();
max_len *= 1.2;
int w = qMax(max_len, this->width());
this->view()->setFixedWidth(w);
}
应用:
在Qt设计师界面拖入QComboBox控件,然后提升为ComboBoxEx。
ui->comboBox->adjustItemWidth();
---
引申阅读
QComboBox下拉框文字如何在字体变大之后自适应高度
https://blog.csdn.net/GoForwardToStep/article/details/98944599
本文介绍一个针对 .NET 桌面应用程序的独立图片缩放拖拽显示控件 [SQPhoto](https://www.nuget.org/packages/SQPhoto/)。
原文:在UWP中自定义半边框样式的输入框
Windows10发布已经有一阵子了,已经有一些公司上架了自己的UWP应用程序,为WindowsStore增添光彩。已经安装Windows10的用户也或多或少的安装了一些UWP的应用程序,针对这些UWP的应用程序设计来说有好有坏,好的方面体现在它们的用户体验始终是保证一致,符合Win10的产品理念,步调能够保持一致;坏的方面就是由于它们步调太过于一致导致用户体验太过雷同,进而出现一些用户会出现审美疲劳。
如何新建shape文件:https://jingyan.baidu.com/article/b907e62795139746e7891cb9.html
如何在空间中加入shape.