class MyWidget : public QDialog
{
//Q_OBJECT
public:
MyWidget(QWidget *parent = 0, const char *name = 0, bool modal = FALSE,
WFlags fl = WStyle_Tool | WStyle_Customize);
// ~MyWidget();
void MainPage(void);
bool eventFilter( QObject *obj, QEvent *ev );
protected:
private:
QLabel *MainLabel;
QLabel *K3Label;
QFrame *MainFrame;
};
MyWidget::MyWidget( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
setCursor(QCursor(10));
MainPage( );
}
void MyWidget::MainPage(void)
{
MainFrame = new QFrame(this, "MainFrame");
MainFrame -> setGeometry(QRect(0, 0, 800, 600));
MainFrame -> setFrameShape(QFrame::NoFrame);
MainFrame -> setFrameShadow(QFrame::Raised);
MainFrame -> hide();
MainLabel = new QLabel(MainFrame, "MainLabel");
MainLabel -> setGeometry(QRect(0, 0, 800, 600));
MainLabel -> setBackgroundPixmap(QPixmap::QPixmap("/hello/para.png", 0, 0));
//MainLabel -> installEventFilter(this);
K3Label = new QLabel(MainFrame, "K3Label");
K3Label -> setGeometry(QRect(294, 48, 74, 77));
K3Label -> setBackgroundPixmap(QPixmap::QPixmap("/hello/k31.png", 0, 0));
K3Label -> installEventFilter( this );
}
bool MyWidget::eventFilter(QObject *obj, QEvent *ev)
{
if((obj == K3Label) && (ev -> type() == QEvent::MouseButtonPress))
{
K3Label -> setBackgroundPixmap(QPixmap::QPixmap("/hello/k32.png", 0, 0));
return TRUE;
}
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
// w.setGeometry( 0, 0, 800, 600 );
/// a.setMainWidget( &w );
// w.show();
// return a.exec();
w.showFullScreen();
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
}
问2个问题啊 !
1.问什么这样我的图片加载不上来,把这个MainLabel = new QLabel(MainFrame, "MainLabel");
里面的MainFrame改成this就可以显示图片了,用MainFrame为什么不行啊,理论上不是应该可以的么,哪里出了问题啊
2.我想当鼠标点上K3lable的时候这个键的图片可以改变成另外一个图片,应该怎么做啊,初学者,很多不懂,希望大虾们指点