Qt QLineEdit QLabel添加clicked事件,给控件添加事件方法
2014-12-08 08:17
639 查看
本文链接地址:
Qt QLineEdit QLabel添加clicked事件
小编温馨提醒:以下内容有纯属参考,大概率会出现信号没有传递的问题
接下来给大家一个简单的发送信号的方式。
做Qt开发的会知道QLineEdit,QLabel是默认没有clicked事件的,但是Qt有很好的一套信号/槽机制,而且Qt是基于C++面向对象的思想来设计的,那么我们就很容易通过自己定义一些类,重写QLineEdit或者QLabel的一些方法去实现没有的方法,比如clicked事件.本人就以QLineEdit QLabel添加clicked事件来说明.
Qt里面有个关键字emit,这个关键字意思就是触发一个信号,具体emit更详细的使用方法,可以百度,本文不做具体详解,只需知道emit是触发一个信号的方法即可.
下面我们就开始讲如何给QLineEdit添加clicked()事件.首先我们需要一个类,继承QLineEdit,我们定义为:mylineedit.那么分析下clicked()事件,这个事件是因为我们鼠标单击点击了下lineedit,然后触发的,那么正好,我们想到了在Qt有个mousePressEvent事件,于是我们可以重写mousePressEvent事件,然后触发自定义一个clicked()的信号,这样就可以实现点击lineedit就会发送一个clicked()的信号,代码如下:
mylineedit.h
运行之后的效果就是点击lineedit,然后lineedit背景变为红色.同理,QLabel增加clicked功能也可以实现了.效果如下:
Qt QLineEdit QLabel添加clicked事件
小编温馨提醒:以下内容有纯属参考,大概率会出现信号没有传递的问题
接下来给大家一个简单的发送信号的方式。
做Qt开发的会知道QLineEdit,QLabel是默认没有clicked事件的,但是Qt有很好的一套信号/槽机制,而且Qt是基于C++面向对象的思想来设计的,那么我们就很容易通过自己定义一些类,重写QLineEdit或者QLabel的一些方法去实现没有的方法,比如clicked事件.本人就以QLineEdit QLabel添加clicked事件来说明.
Qt里面有个关键字emit,这个关键字意思就是触发一个信号,具体emit更详细的使用方法,可以百度,本文不做具体详解,只需知道emit是触发一个信号的方法即可.
下面我们就开始讲如何给QLineEdit添加clicked()事件.首先我们需要一个类,继承QLineEdit,我们定义为:mylineedit.那么分析下clicked()事件,这个事件是因为我们鼠标单击点击了下lineedit,然后触发的,那么正好,我们想到了在Qt有个mousePressEvent事件,于是我们可以重写mousePressEvent事件,然后触发自定义一个clicked()的信号,这样就可以实现点击lineedit就会发送一个clicked()的信号,代码如下:
mylineedit.h
#ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include <QLineEdit> #include <QMouseEvent> class mylineedit : public QLineEdit { Q_OBJECT public: explicit mylineedit(QWidget *parent = 0); protected: //重写mousePressEvent事件 virtual void mousePressEvent(QMouseEvent *event); signals: //自定义clicked()信号,在mousePressEvent事件发生时触发 void clicked(); public slots: }; #endif // MYLINEEDIT_H
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //在widget的构造函数绑定lineedit的clicked信号 connect(ui->lineEdit, SIGNAL(clicked()), this, SLOT(handlelineeditclicked())); connect(ui->label, SIGNAL(clicked()), this, SLOT(handlelabelclicked())); } Widget::~Widget() { delete ui; } void Widget::handlelineeditclicked() { //在处理lineedit clicked函数里我们将lineedit背景色变为红色 ui->lineEdit->setStyleSheet("background-color:red"); } void Widget::handlelabelclicked() { ui->label->setStyleSheet("background-color:green"); }
运行之后的效果就是点击lineedit,然后lineedit背景变为红色.同理,QLabel增加clicked功能也可以实现了.效果如下:
相关文章推荐
- Qt 给控件QLineEdit添加clicked事件方法
- Qt QLineEdit QLabel 添加clicked事件
- Qt QLineEdit QLabel添加clicked事件
- Asp.net 动态创建的控件并添加事件,无响应的解决方法。
- Qt为QLabel添加点击事件-使QLabel成为一个图片按钮
- 【QT】QT从零入门教程(八):QT常用控件 [QLabel、QPushButton、QLineEdit、QTextEdit]
- Asp.net 动态创建的控件并添加事件,无响应的解决方法。
- 玩无限消乐的设计示例(基础篇)DataGridView控件添加拖放事件方法和委托
- Qt学习: 给程序添加快捷键事件的几种方法介绍
- QT常用控件之QTimer,QDialog,QLabel,QLineEdit,QProgressBar,QComboBox,QPushButton,QGridLayout
- asp.net(C#)中给控件添加客户端js事件的方法
- JS脚本实现动态给标签控件添加事件的方法
- Qt添加背景图片而不影响其控件的不用代码的设置方法
- 关于写ATL控件时对控件添加事件事 'IID__IXXXEvents' : undeclared identifier的问题解决方法
- 用不是办法的办法给第三方控件添加事件、方法
- 控件类——如何给视图添加响应事件?(有一个方法及其解析)
- JS脚本实现动态给标签控件添加事件的方法
- QT学习记录(1)-控件 QPushButton, QLineEdit, QLabel, QHBoxLayout, QGridLayout
- JS实现动态给标签控件添加事件的方法示例
- asp.net(C#)中给控件添加客户端js事件的方法