给QlineEdit创建简单的clicked 信号方式

Posted 小哈龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给QlineEdit创建简单的clicked 信号方式相关的知识,希望对你有一定的参考价值。

给qlineedit建立一个clicked的方式,我归结为有3种;

第一种:建立一个新类,继承父类控件,将控件里的函数进行重载,最后将返回事件的处理交会父类控件。

第二种:事件过滤器。(其实我也不太懂,小编还会继续研究的,有时间会将其解释出来)

第三种:以第一种的为基础,但是继承就算了。(只适合小规模的)


1)建立一个小的gui项目

2)在 ui 界面设立y一个qlineedit文本框

3)在  .h 头文件中,加入信号机制

signals:
    void clicked();

4)在  .cpp 文件中的构造函数

ui->lineEdit->installEventFilter(this);  //声明机制的存在

5)在 .h 头文件中重载eventFilter

protected:
    bool eventFilter(QObject *obj, QEvent *e);

6)在 .cpp 文件中重写eventFilter

bool MainWindow::eventFilter(QObject *obj, QEvent *e)
{
    if(obj == ui->lineEdit && e->type() == QEvent::MouseButtonPress){
        QMouseEvent *me = (QMouseEvent*)e;
        if(me->button() == Qt::LeftButton){
            emit clicked();
            //当然如果能理解并偷懒的话,其实这里可以写入相应的代码。
            //例如使lineedit做成像button一样。那么connect信号与槽函数就可以省去变成直接调用函数
            //connect(ui->lineedit, SIGNAL(clicked()), this, SLOT(send()));
            //像上面哪一个 我们就可以直接的在这个地方直接加入 send();就可以省去程序调用信号槽的机制
            //当然小编觉得还可以在缩水,看个人喜欢和理解了。
        }
    }
    return QMainWindow::eventFilter(obj,e);
}



原文链接:https://blog.csdn.net/lazzy_seed/article/details/41819243

以上是关于给QlineEdit创建简单的clicked 信号方式的主要内容,如果未能解决你的问题,请参考以下文章

QlineEdit 和信号&槽

使用 pyqt4 创建类信号

未调用 QLineEdit textChanged 信号

QLineEdit 的 GUI 问题

Qt - QLineEdit编辑框

五QPushButton按钮和QLineEdit控件操作