Qt中图片调用(2)

项目要求:设置一个按钮和一个LABEL,按下按钮LABEL状态发生变化,再按下LABEL状态又发生变化。

源码地址:http://pan.baidu.com/s/1qWDFGHQ

本实验在Qt中图片调用(1)的基础上做修改。

1. 添加灯状态变量,信号,和槽函数,mywidget.h修改如下:

 1 class MyWidget : public QWidget
 2 {
 3     Q_OBJECT
 4 
 5 public:
 6     explicit MyWidget(QWidget *parent = 0);
 7     ~MyWidget();
 8 
 9 private:
10     Ui::MyWidget *ui;
11     int state_lamp;    //灯状态变量
12 //添加信号定义
13 signals:
14     void lamp_signal();//signals
15 private slots:
16     void lamp();        //slots
17     void on_pushButton_clicked();
18 };

2. 在构造函数中创建信号与槽函数的连接,然后在按钮单击函数中发射信号。mywidget.cpp修改如下:

 1 #include "mywidget.h"
 2 #include "ui_mywidget.h"
 3 #include <QTextCodec>
 4 
 5 MyWidget::MyWidget(QWidget *parent) :
 6     QWidget(parent),
 7     ui(new Ui::MyWidget)
 8 {
 9     ui->setupUi(this);
10     ui->label->setPixmap(QPixmap(":/close.jpg"));
11     ui->pushButton->setText("open");
12     state_lamp = 0;//初始化lamp的状态
13     connect(this,SIGNAL(lamp_signal()),this,SLOT(lamp()));//将槽与信号连接
14 
15 }
16 
17 MyWidget::~MyWidget()
18 {
19     delete ui;
20 }
21 
22 void MyWidget::on_pushButton_clicked()
23 {
24     emit lamp_signal();    //发射信号
25 }
26 
27 void MyWidget::lamp()      //槽函数
28 {
29        state_lamp = ~state_lamp;
30        if(state_lamp)
31        {
32           ui->label->setPixmap(QPixmap(":/open.jpg"));
33            ui->pushButton->setText("close");
34        }
35        else
36        {
37            ui->label->setPixmap(QPixmap(":/close.jpg"));
38            ui->pushButton->setText("open");
39        }
40 }

3. ui界面修改如下:

4.运行结果如下:点击“open”按钮,图片变为红色且按钮变成“close”状态,再点击“close”按钮,图片又变为灰色。

posted @ 2014-05-11 17:43  hex&pcb  阅读(1218)  评论(0编辑  收藏  举报