| 
 | 
 
 
 
  自定义类,头文件- #ifndef GATE_H
 - #define GATE_H
 - #include <QWidget>
 - #include "QPainter"
 - class gate : public QWidget
 - {
 -     Q_OBJECT
 -     Q_PROPERTY(Epotentail InA READ getInA WRITE setInA)
 -     Q_PROPERTY(Epotentail InB READ getInB WRITE setInB)
 -     Q_PROPERTY(Epotentail OutY READ getOutY WRITE setOutY)
 -     Q_ENUMS(Epotentail)
 - public:
 -     explicit gate(QWidget *parent = 0);
 -     enum Epotentail{/*Enull*/Elow,Ehight};
 -     Epotentail Fina,Finb,Fouty;
 -     Epotentail getInA(){return Fina;}
 -     Epotentail getInB(){return Finb;}
 -     Epotentail getOutY(){return Fouty;}
 -     void setInA(int A){Fina = Epotentail(A);gated();}
 -     void setInB(int B){Finb = Epotentail(B);gated();}
 -     void setOutY(int Y){Y;}
 -     void gated();
 - protected:
 -     void paintEvent(QPaintEvent *event);
 -     void DoDrawText();
 - //signals:
 -     
 - //public slots:
 -     
 - };
 - #endif // GATE_H
 
 。cpp 
 - #include "gate.h"
 - gate::gate(QWidget *parent) :
 -     QWidget(parent)
 - {
 -     //
 - }
 - void gate::gated()
 - {
 -     if(Fina == Ehight&&Finb == Ehight){
 -     Fouty=Ehight;}
 - //    else if(Fina ==Enull||Finb == Enull){
 - //    Fouty=Enull;
 - //    }
 -     else {
 -     Fouty=Elow;
 -     }
 -     update();
 - }
 - void gate::paintEvent(QPaintEvent *event)
 - {
 -     event;
 -     QPainter painter(this);
 -     painter.setPen(QPen(Qt::black,2,Qt::SolidLine,Qt::RoundCap));
 -     if(Fouty == Elow)
 -     {
 -         painter.setPen(QPen(Qt::black,2,Qt::SolidLine,Qt::RoundCap));
 -     }
 -     else if(Fouty == Ehight){
 -         painter.setPen(QPen(Qt::red,2,Qt::SolidLine,Qt::RoundCap));
 -     }
 - //    else{
 - //       painter.setPen(QPen(Qt::gray,2,Qt::SolidLine,Qt::RoundCap));
 - //    }
 -     painter.drawRect(50,50,100,80);     //绘制原件中间的方块部分
 -     painter.drawLine(0,70,50,70);       //绘制输入端输出端
 -     painter.drawLine(0,110,50,110);
 -     painter.drawLine(150,90,200,90);
 -     DoDrawText();
 - }
 - void gate::DoDrawText()
 - {
 -     QFont font;
 -     font.setPointSize(20);
 -     QPainter painter(this);
 -     painter.setFont(font);
 -     QRect z(50,50,100,80);
 -     painter.drawText(z, Qt::AlignCenter, tr("&"));
 - }
 
    要写个继承与gate类的子类- #ifndef ANDGATE_H
 - #define ANDGATE_H
 - #include "gate.h"
 - class andgate : public gate
 - {
 -     Q_OBJECT
 - public:
 -     explicit andgate(QWidget *parent = 0);
 - };
 - #endif // ANDGATE_H
 
   错误   
 
 
 |