第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

Qt 給控件QLineEdit添加clicked事件方法

標(biāo)簽:
移動(dòng)測試

      做Qt开发的会知道QLineEdit是默认没有clicked事件的,但是Qt有很好的一套信号/槽机制,而且Qt是基于C++面向对象的思想来设计的,那么我们就很容易通过自己定义一些类,重写QLineEdit的一些方法去实现没有的方法,比如clicked事件.本人就以QLineEdit 添加clicked事件来说明.

  Qt里面有个关键字emit,这个关键字意思就是触发一个信号,具体emit更详细的使用方法,可以百度,本文不做具体详解,只需知道emit是触发一个信号的方法即可.

下面我们就开始讲如何给QLineEdit添加clicked()事件.首先我们需要一个类,继承QLineEdit,我们定义为:mylineedit。

1、选中项目右击选择添加新文件,类名为:mylineedit。

 https://img1.sycdn.imooc.com//5c0d0bbc00017c3208960559.jpghttps://img1.sycdn.imooc.com//5c0d0bbf0001e7f708160508.jpghttps://img1.sycdn.imooc.com//5c0d0bc400011bb813660736.jpg

 

 

2、分析下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_OBJECTpublic:
   mylineedit();    explicit mylineedit(QWidget *parent = 0);protected:    //重写mousePressEvent事件
    virtual void mousePressEvent(QMouseEvent *event);

signals:    //自定义clicked()信号,在mousePressEvent事件发生时触发
    void clicked();public slots:
};#endif // MYLINEEDIT_H


mylineedit.cpp

 


#include "mylineedit.h"mylineedit::mylineedit(QWidget *parent) :
    QLineEdit(parent)
{

}//重写mousePressEvent事件,检测事件类型是不是点击了鼠标左键void mylineedit::mousePressEvent(QMouseEvent *event)
{    //如果单击了就触发clicked信号
    if (event->button() == Qt::LeftButton)
    {        //触发clicked信号        emit clicked();
    }    //将该事件传给父类处理
    QLineEdit::mousePressEvent(event);
}


 

3、通过以上代码,我们的LineEdit已经具有了发出clicked信号的能力,那么我们就可以把他做为一个组件放到QWidget或者其他容器里面,在QWidget类里面我们提供一个处理LineEditclicked信号的槽函数,然后在QWidget构造函数里面绑定LineEditclicked信号跟对应的处理函数,这样就可以达到我们想要的效果.

widget.h

复制代码

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;
}class Widget : public QWidget
{
    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private:
    Ui::Widget *ui;private slots:    //定义槽函数处理lineedit clicked
    void handlelineeditclicked();

};#endif // WIDGET_H


widget.cpp

 


#include "widget.h"#include "ui_widget.h"#include"mylineedit.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()));

}

Widget::~Widget()
{    delete ui;
}void Widget::handlelineeditclicked()
{    //在处理lineedit clicked函数里我们将lineedit背景色变为红色
    ui->lineEdit->setStyleSheet("background-color:red");
}


 

4、最后一定要将界面上的LineEdit控件提升为我们自定义的mylineedit类。

界面上右击LineEdit控件提升为,填写提升的类名称,点击添加即可。

5、运行之后的效果就是点击LineEdit,然后LineEdit背景变为红色.效果如下:

 注:此文章参考网上,结合本人实际实现的效果。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消