首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

怎么把QLabel改成按钮 !

2013-02-25 
如何把QLabel改成按钮 !!!#include widget.h#include ui_widget.h#includeQPushButton#includeQBit

如何把QLabel改成按钮 !!!

#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
#include<QBitmap>
#include<QPixmap>
#include <QMouseEvent>
#include <QMessageBox>
#include <QLabel>
#include<QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
   
    QPixmap pm;   pm.load(":/picture/Image/s.png");
    ui->label->setGeometry(0,0,pm.width(), pm.height());
    ui->label->setPixmap(pm);

    int i=connect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));   //信号连接
    qDebug()<<i<<endl;
}

Widget::~Widget()
{
    delete ui;
}


void Widget::mousePressEvent(QMouseEvent *e)
{
      int x = e->x();
      int y = e->y();

       //假如在QRect( 0, 0, 48, 48 )这个区域里(图片大小为48X48),就发出信号
       if (x>0 && x<48 && y>0 && y<48){
           emit clicked();
       }
}

void Widget::slotClicked()
{
    QMessageBox::about( this, "Mouse Example", "You have pressed mouse, exit now!");
        close();
}


最后显示为0,证明那个槽连接不了,为什么会出现这种现象

[解决办法]
应该重写QLabel派生类的mousePressEvent(QMouseEvent *e),现在是重写的QLabel的parent
[解决办法]
引用:
引用:应该重写QLabel派生类的mousePressEvent(QMouseEvent *e),现在是重写的QLabel的parent能具体点吗?

继承QLabel写一个类
class xxxx :public QLabel

xxxxx();

protected:
void mousePressEvent(QMouseEvent *e);


[解决办法]
请参考我的博客,有篇文章是:
Qt QLineEdit QLabel添加clicked事件
http://www.jyguagua.com/?p=668
看完你就懂怎么去实现QLabel的点击事件了.
[解决办法]
int i=connect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));//这个不需要了
if (x>0 && x<48 && y>0 && y<48)
 {
      emit clicked();//不需要用自定义信号了,直接在这里调用slotClicked()就可以啊。
 }

热点排行