简单封了一个:
可根据情况 添加按钮图片,修改按钮大小
方法1:
#include<QLineEdit>
#include<QPushButton>
#include<QHBoxLayout>
#include<QEvent>
#include<QDebug>
#include<QMouseEvent>
class CustomLine : public QLineEdit
{
Q_OBJECT
public:
CustomLine(QWidget *parent= nullptr):QLineEdit(parent)
{
HB = new QHBoxLayout;
Button = new QPushButton;
Button->setFixedWidth(30);
HB->addWidget(Button,0,Qt::AlignRight);
HB->setContentsMargins(0,1,1,1);
this->setLayout(HB);
Button->installEventFilter(this);
}
// 槽函数绑定
void BindFunction(std::function<void(void)>func)
{
connect(Button,&QPushButton::clicked,func);
}
private:
//解决 鼠标放置在按钮上 图标显示
void mouseMoveEvent(QMouseEvent * event)
{
if(event->pos().x() < this->width()- Button->width()-5)
{
this->setCursor(QCursor(Qt::IBeamCursor));
}
else
{
this->setCursor(QCursor(Qt::ArrowCursor));
}
}
QPushButton *Button;
QHBoxLayout *HB;
};
方法2:
#include<QLineEdit>
#include<QPushButton>
#include<QHBoxLayout>
#include<QEvent>
#include<QDebug>
#include<QMouseEvent>
class CustomLine : public QLineEdit
{
Q_OBJECT
public:
CustomLine(QWidget *parent= nullptr):QLineEdit(parent)
{
HB = new QHBoxLayout;
Button = new QPushButton;
Button->setFixedWidth(30);
HB->addWidget(Button,0,Qt::AlignRight);
HB->setContentsMargins(0,1,1,1);
this->setLayout(HB);
Button->setFocusPolicy(Qt::NoFocus);
//解决 鼠标放置在按钮上 图标显示
Button->setCursor(QCursor(Qt::ArrowCursor));
}
// 槽函数绑定
void BindFunction(std::function<void(void)>func)
{
connect(Button,&QPushButton::clicked,func);
}
private:
QPushButton *Button;
QHBoxLayout *HB;
};
测试:
lineEdit->BindFunction([]{
qDebug()<<"button clieck....";
});