• 3879阅读
  • 0回复

请教qt-2.3.7中绘制文本的问题! [复制链接]

上一主题 下一主题
离线guoyun_he
 

只看楼主 倒序阅读 楼主  发表于: 2007-12-26
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
本人想用qt-2.3.7绘制一电压表。源码如下:
  1. const int MaxVoltage = 26;
  2. void QVoltMeter::paintEvent(QPaintEvent *)
  3. {
  4.     QPainter painter(this);         
  5.           ......
  6.     QFontMetrics fm = painter.fontMetrics();                     
  7.     QString strVoltage;
  8.     int textwidth=0, textheight = fm.height();;
  9.     int side = height();
  10.     if ( width() < height() )
  11.     {
  12.         side = width();
  13.     }
  14.     painter.setViewport( (width() - side)/2, (height() - side)/2, side, side );           
  15.     painter.setWindow(-50, -50, 100, 100);                                                             
  16.     QPen thickPen( QColor(150, 150, 200), 2 );
  17.     QPen thinPen(QColor(0, 0, 0), 1 );
  18.     painter.setPen( QPen(QColor(0, 0, 0), 3) );
  19.     painter.drawEllipse( -50, -50, 100, 100 );
  20.     painter.setPen( QPen(QColor(50,50,50),3) );
  21.     painter.drawEllipse( -49, -49, 98, 98 );
  22.     painter.setPen( QPen(QColor(100,100,100),3) );
  23.     painter.drawEllipse( -48, -48, 96, 96 );
  24.     painter.setPen( QPen(QColor(150,150,150),3) );
  25.     painter.drawEllipse( -47, -47, 94, 94 );
  26.     painter.setBrush( QBrush( Qt::white, Qt::SolidPattern ) );
  27.     painter.drawEllipse( -46, -46, 92, 92 );
  28. //绘制文本部分
  29.     for (int i = 0; i <= MaxVoltage; ++i)
  30.     {
  31.         if (i % 5 == 0)
  32.         {
  33.             painter.setPen( thickPen );
  34.             painter.drawLine(-41, 0, -44, 0);
  35.             painter.setPen( thinPen );
  36.             strVoltage = QString::number( i*10 );
  37.             textwidth = fm.width( strVoltage ); 
  38.             painter.drawText( -40,-textheight/2,textwidth ,textheight,
  39.                 Qt::AlignHCenter | Qt::AlignBottom, strVoltage );
  40.         }
  41.         else
  42.         {
  43.             painter.setPen( thinPen );
  44.             painter.drawLine(-42, 0, -44, 0);
  45.         }
  46.         painter.rotate(10);
  47.     }
  48. // 绘制文本部分
  49.     ......
  50. }


上面代码中红色部分为为绘制电压表的电压示数。可是在同一个for循环里面绘制的文本格式却不一样。见附件,请教如何才能够是绘制的文本大小一致?
快速回复
限100 字节
 
上一个 下一个