QCheckBoxEx

QCheckBoxEx

// QCheckBoxEx.h
#include  < QtGui / QtGui >
class  QCheckBoxEx :  public  QAbstractButton 

public
    QCheckBoxEx(QWidget
*  parent);
    
bool  init(QString yes,QString no);
private :
    QPixmap m_pixmap[
2 ];
protected
    
void  paintEvent(QPaintEvent  * event ); 
};


// QCheckBoxEx.cpp
#include  " QCheckBoxEx.h "
QCheckBoxEx::QCheckBoxEx(QWidget
*  parent) 

    setParent(parent);
    setCheckable(
true );
}

bool  QCheckBoxEx::init(QString yes,QString no)
{
    m_pixmap[
0 ].load(no);
    m_pixmap[
1 ].load(yes);

    
int  w  =  m_pixmap[ 0 ].width();
    
int  h  =  m_pixmap[ 0 ].height();

    
if  (w  &&  h  &&  w ==  m_pixmap[ 1 ].width()  &&  h == m_pixmap[ 1 ].height())
    {
        resize(w,h);
        
return   true ;
    }
    
return   false ;
}
void  QCheckBoxEx::paintEvent(QPaintEvent  * event

    QPainter p(
this );
    
if  (isChecked())
    {
        p.drawPixmap(
0 , 0 ,m_pixmap[ 1 ]);
    }
    
else {
        p.drawPixmap(
0 , 0 ,m_pixmap[ 0 ]);
    }
}

// 使用
    m_check  =   new  QCheckBoxEx( this );
    m_check
-> init( " d:\\1.jpg " , " d:\\0.jpg " );
    
// m_check->setChecked(true);

你可能感兴趣的:(QCheckBoxEx)