• 5330阅读
  • 3回复

Qt的paintevent绘图 [复制链接]

上一主题 下一主题
 
只看楼主 正序阅读 楼主  发表于: 2012-12-03

Qt中的paintevent如何通过枚举变量来控制绘图
我的枚举定义为
enum {Yellow,Red,Green}Llightcolor;enum {Square,Round,Triangle,Ellipse}LShape;

void LED::paintEvent(QPaintEvent*event){    QPainter painter(this);    int side=qMin(width(),height());    painter.setViewport((width()-side)/2,(height()-side)/2,side,side);    painter.setRenderHint(QPainter::Antialiasing,true);    painter.setWindow(10,10,25,25);     if(LanoteVoltage=="1"&&LcathodeVoltage=="0"){
switch(Llightcolor)
    {
    case Yellow:
         painter.setBrush(QBrush(Qt::yellow,Qt::SolidPattern));
         break;
    case Red:
         painter.setBrush(QBrush(Qt::red,Qt::SolidPattern));
         break;
    case Green:
         painter.setBrush(QBrush(Qt::green,Qt::SolidPattern));
         break;
     default:
         QMessageBox::information(0,"Alarm",tr("警告:颜色输入错误!"));
         break;
    }
    switch(LShape)
    {
    case Square:
         painter.drawRect(12,12,20,20);
         break;
    case Round:
         painter.drawEllipse(12,12,20,20);
         break;
    case Triangle:
        static int triangle[3][2]={ {12,12},{32,17},{12,22}};
        painter.drawPolygon(QPolygon(3,&triangle[0][0]));
         break;
    case Ellipse:
         painter.drawEllipse(12,12,20,10);
         break;
    default:
         QMessageBox::information(0,"Alarm",tr("警告:形状输入错误!"));
         break;
    }
}但是他就是进不去,不会按这个值得改变而有对应的动作
        
菜鸟而已
只看该作者 3楼 发表于: 2013-03-05
好的,谢了
菜鸟而已
离线kimtaikee

只看该作者 2楼 发表于: 2012-12-03
BTW 以后贴代码记得把代码加在code tag中,这样方便别人查看代码解决你的问题。

离线kimtaikee

只看该作者 1楼 发表于: 2012-12-03
  1. enum {Yellow,Red,Green} Llightcolor;
  2. enum {Square,Round,Triangle,Ellipse}LShape;
  3. void LED::paintEvent(QPaintEvent*event)
  4. {    
  5.    QPainter painter(this);
  6.    int side=qMin(width(),height());
  7.    painter.setViewport((width()-side)/2,(height()-side)/2,side,side);
  8.    painter.setRenderHint(QPainter::Antialiasing,true);  
  9.    painter.setWindow(10,10,25,25);    
  10.    if(LanoteVoltage=="1"&&LcathodeVoltage=="0")
  11.    {
  12.       switch(Llightcolor)
  13.      {
  14.        case Yellow:
  15.          painter.setBrush(QBrush(Qt::yellow,Qt::SolidPattern));
  16.          break;
  17.        case Red:
  18.          painter.setBrush(QBrush(Qt::red,Qt::SolidPattern));
  19.          break;
  20.        case Green:
  21.          painter.setBrush(QBrush(Qt::green,Qt::SolidPattern));
  22.          break;
  23.         default:
  24.          QMessageBox::information(0,"Alarm",tr("警告:颜色输入错误!"));
  25.          break;
  26.     }
  27.     switch(LShape)
  28.     {
  29.     case Square:
  30.          painter.drawRect(12,12,20,20);
  31.          break;
  32.     case Round:
  33.          painter.drawEllipse(12,12,20,20);
  34.          break;
  35.     case Triangle:
  36.         static int triangle[3][2]={ {12,12},{32,17},{12,22}};
  37.         painter.drawPolygon(QPolygon(3,&triangle[0][0]));
  38.          break;
  39.     case Ellipse:
  40.          painter.drawEllipse(12,12,20,10);
  41.          break;
  42.     default:
  43.          QMessageBox::information(0,"Alarm",tr("警告:形状输入错误!"));
  44.          break;
  45.     }
  46. }
  switch 里面你怎么是enum的名称,你应该分别以这两种enum类型声明两个变量来控制绘制的颜色和形状
  1. Llightcolor _lightColor;
  2. LShape _shape;
  3. switch(_lightColor) or
  4. switch(_shape)

快速回复
限100 字节
 
上一个 下一个