如何把QLabel改成按钮 !!!

trustguan 2013-02-19 07:35:44
#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,证明那个槽连接不了,为什么会出现这种现象
...全文
737 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
岁小草 2013-02-21
  • 打赏
  • 举报
回复
int i=connect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));//这个不需要了 if (x>0 && x<48 && y>0 && y<48) { emit clicked();//不需要用自定义信号了,直接在这里调用slotClicked()就可以啊。 }
醉过方知酒烈 2013-02-20
  • 打赏
  • 举报
回复
确定你的信号槽都声明了。不要用标准的信号,这个相当于是你自己的信号。 你自己定义一个信号,你那样写就是可以的。
__阿飞__ 2013-02-20
  • 打赏
  • 举报
回复
请参考我的博客,有篇文章是: Qt QLineEdit QLabel添加clicked事件 http://www.jyguagua.com/?p=668 看完你就懂怎么去实现QLabel的点击事件了.
jdwx 2013-02-20
  • 打赏
  • 举报
回复
引用 2 楼 trustguan 的回复:
引用 1 楼 jdwx1 的回复:应该重写QLabel派生类的mousePressEvent(QMouseEvent *e),现在是重写的QLabel的parent能具体点吗?
继承QLabel写一个类 class xxxx :public QLabel { xxxxx(); protected: void mousePressEvent(QMouseEvent *e); }
Jonix 2013-02-20
  • 打赏
  • 举报
回复
发一下头文件看看。 void slotClicked(); 会不会放错位置?
「已注销」 2013-02-20
  • 打赏
  • 举报
回复
引用 1 楼 jdwx1 的回复:
应该重写QLabel派生类的mousePressEvent(QMouseEvent *e),现在是重写的QLabel的parent
能具体点吗?
jdwx 2013-02-19
  • 打赏
  • 举报
回复
应该重写QLabel派生类的mousePressEvent(QMouseEvent *e),现在是重写的QLabel的parent

16,233

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧