• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            在寫一些需要精確布局或者排版的軟件時候,我們需要知道文本的寬度和高度,保證我們在適當(dāng)?shù)淖鴺?biāo)中使用drawText。例如,我在做一個簡單的掃雷軟件時,希望把每個格子附近的雷數(shù)給顯示在小格子里,如下圖所示,就需要這樣的功能。
            mines

            不同的字體,字寬字高都是不一樣的。所以計算文本寬度的是一個和字體相關(guān)的一個類QFontMetrics。

            QPainter p(this);
            QFontMetrics fm = p.fontMetrics();

            可以用fm.width(text)獲得你想處理的字串text的寬度。而高度對于所有的字都是一樣的,可以用 fm.ascent()+fm.descent()來實(shí)現(xiàn)。ascent是指從一個字的基線(baseline)到最頂部的距離,descent是指一個 字的基線到最底部的距離。關(guān)于字體的一些術(shù)語,請參考
            http://book.csdn.net/bookfiles/308/10030812802.shtm

            要記住,QPainter的drawText畫字的基點(diǎn)坐標(biāo)是字串的基線(不是底部,也不是頂部,而是下部)。看下面的貼圖
            drawtext1

            所以,如果你想在坐標(biāo)(0,0,20,20)的框正中畫一個字的話,可以使用

            QPoint pt((20-fm.width(text))/2,(20-(fm.ascent()+fm.descent()))/2+fm.ascent());
            p.drawText(pt,text);
            posted on 2009-09-18 16:18 逛奔的蝸牛 閱讀(4234) 評論(0)  編輯 收藏 引用 所屬分類: Qt
            久久久无码精品亚洲日韩软件| 99久久免费国产精品热| 污污内射久久一区二区欧美日韩| 久久精品国产一区二区电影| 久久久久久久女国产乱让韩| 亚洲国产精品无码久久98| 91精品婷婷国产综合久久| 亚洲а∨天堂久久精品9966| 精品国产VA久久久久久久冰| 日本高清无卡码一区二区久久 | 国产69精品久久久久777| 99久久国产综合精品成人影院 | 精品久久久无码人妻中文字幕豆芽| 一级做a爰片久久毛片人呢| 亚洲中文久久精品无码ww16 | 国内精品久久久久久久影视麻豆 | 久久99热国产这有精品| 伊人久久大香线蕉亚洲| 久久天天躁狠狠躁夜夜av浪潮| 久久99久久99小草精品免视看| 亚洲中文久久精品无码| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 精品国产婷婷久久久| 成人免费网站久久久| 国内精品久久久久影院优| 久久午夜无码鲁丝片秋霞| 日日狠狠久久偷偷色综合96蜜桃 | 无码AV中文字幕久久专区| 亚洲精品无码久久毛片| 久久中文字幕无码专区| 精品久久久久久无码中文野结衣| 欧美亚洲色综久久精品国产| 精品国产乱码久久久久久人妻| 午夜视频久久久久一区| 久久男人AV资源网站| 久久伊人精品青青草原日本| 一本一本久久a久久精品综合麻豆| 久久99精品久久久久久噜噜| 久久久久无码专区亚洲av| 久久久久这里只有精品| 女人高潮久久久叫人喷水|