昆仑  

在做一些应用的时候,可能会随时动态的改变一些控件的大小(比如QLabel),如果控件里的文字的大小不随之变化的话,就很容易出现太小,或者超出控件的情况发生。

 

可以使用下面的代码来调整控件字体的大小:

    int cellwidth=26;

    
int fontsize=1;
    
while(true)
    {
        QFont tmp(
"Arial",fontsize);
        tmp.setPointSize(fontsize);
        QFontMetricsF fm(tmp);
        qreal pixelsWide 
= fm.width("8");
        qreal pixelsHigh 
= fm.height();
        
if(pixelsWide>=cellwidth || pixelsHigh >= cellwidth)
            
break;
        
++fontsize;
    }
    QFont font(
"Arial",fontsize);

上面的代码是要求一个存放个位数字的方形控件的字体大小。假定控件的宽和高背限制为cellwidth变量的值。

然后逐次循环创建fontsize大小的字体,通过QFontMetricsF类取得该字体应用到某一段文字(这里用了“8”)的宽和高。再与之前的cellwidth进行比较,超过时结束循环。

此时fontsize存的就是符合要求的字体大小了。。。。

 

很简单的代码,很简单的需求,似乎不值得一提。:)不过且抛出这个砖块看看。。

 

 

 

posted on 2009-07-10 20:14  ttylikl  阅读(4723)  评论(0编辑  收藏  举报