给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 信号方式的主要内容,如果未能解决你的问题,请参考以下文章