日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 给控件QLineEdit添加clicked事件方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? 做Qt開發的會知道QLineEdit是默認沒有clicked事件的,但是Qt有很好的一套信號/槽機制,而且Qt是基于C++面向對象的思想來設計的,那么我們就很容易通過自己定義一些類,重寫QLineEdit的一些方法去實現沒有的方法,比如clicked事件.本人就以QLineEdit 添加clicked事件來說明.

  Qt里面有個關鍵字emit,這個關鍵字意思就是觸發一個信號,具體emit更詳細的使用方法,可以百度,本文不做具體詳解,只需知道emit是觸發一個信號的方法即可.

下面我們就開始講如何給QLineEdit添加clicked()事件.首先我們需要一個類,繼承QLineEdit,我們定義為:mylineedit。

1、選中項目右擊選擇添加新文件,類名為:mylineedit

?

?

?

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_OBJECT public: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 clickedvoid 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背景變為紅色.效果如下:

?注:此文章參考網上,結合本人實際實現的效果。

轉載于:https://www.cnblogs.com/qiantao/p/9638050.html

總結

以上是生活随笔為你收集整理的Qt 给控件QLineEdit添加clicked事件方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。