代码拉取完成,页面将自动刷新
同步操作将从 justdoit-mqr/BaseLineEdit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
*@author: 缪庆瑞
*@date: 2020.04.11
*@brief: 基类行编辑框
*/
#include "baselineedit.h"
#include <QDebug>
/*
*@brief: 构造方法
*@author: 缪庆瑞
*@date: 2020.04.11
*@param: parent:父对象
*@param: leftWid:行编辑框左侧部件 0表示无部件
*@param: rightWid:行编辑框右侧部件 0表示无部件
*/
BaseLineEdit::BaseLineEdit(QWidget *parent, QWidget *leftWid, QWidget *rightWid)
: QLineEdit(parent),leftRightLayout(0),leftWidget(leftWid),rightWidget(rightWid)
{
if(leftWidget || rightWidget)
{
//对行编辑框内的部件进行布局
leftRightLayout = new QHBoxLayout(this);
leftRightLayout->setMargin(2);
leftRightLayout->setSpacing(0);
if(leftWidget)
{
leftRightLayout->addWidget(leftWidget);
}
leftRightLayout->addStretch();
if(rightWidget)
{
leftRightLayout->addWidget(rightWidget);
}
}
setTextSelectionEnabled(true);//默认文本可以被选中
setKeyboardInputEnabled(false);//默认不允许外部键盘输入
}
/*
*@brief: 主动发射编辑信号editSig()
* 因为Qt4中signals是protected权限,无法类外调用,所以这里设置一个public权限接口,实现在类外
* 调用主动发射编辑信号
*@author: 缪庆瑞
*@date: 2020.05.26
*/
void BaseLineEdit::emitEditSig()
{
this->setFocus();
emit editSig();
}
/*
*@brief: 设置行编辑框左右布局margin,主要为了方便调整左右侧部件的位置
*@author: 缪庆瑞
*@date: 2020.04.11
*@param: left:左边间距 right:右边间距
*@param: top:上边间距 bottom:下边间距 默认0,一般不需要调整
*/
void BaseLineEdit::setLeftRightLayoutMargin(int left, int right, int top, int bottom)
{
if(leftRightLayout)
{
leftRightLayout->setContentsMargins(left,top,right,bottom);
/* 在编辑框显示之前左右部件的大小如果没有fixed,那么默认将采用部件自身的推荐大小。所以
* 这里只在部件显示(内部已完成布局)的情况下才自动调整文本的margin,避免按照部件推荐大小
* 设置margin导致编辑框的大小策略受到不良影响。
*/
if(this->isVisible())
{
autoAdjustTextMargins();
}
}
}
/*
*@brief: 鼠标移动事件处理
*@author: 缪庆瑞
*@date: 2020.05.20
*@param: event:鼠标事件
*/
void BaseLineEdit::mouseMoveEvent(QMouseEvent *event)
{
if(textSelectionEnabled)
{
QLineEdit::mouseMoveEvent(event);
}
}
/*
*@brief: 鼠标释放事件处理
*@author: 缪庆瑞
*@date: 2020.04.11
*@param: event:鼠标事件
*/
void BaseLineEdit::mouseReleaseEvent(QMouseEvent *event)
{
//左键释放&&非只读模式
if(event->button() == Qt::LeftButton && !this->isReadOnly())
{
emit editSig();//发射编辑信号
}
QLineEdit::mouseReleaseEvent(event);
}
/*
*@brief: 鼠标双击事件处理
*@author: 缪庆瑞
*@date: 2020.05.20
*@param: event:鼠标事件
*/
void BaseLineEdit::mouseDoubleClickEvent(QMouseEvent *event)
{
if(textSelectionEnabled)
{
QLineEdit::mouseDoubleClickEvent(event);
}
}
/*
*@brief: 键盘按下事件
*@author: 缪庆瑞
*@date: 2020.11.26
*@param: event:键盘事件
*/
void BaseLineEdit::keyPressEvent(QKeyEvent *event)
{
if(keyboardInputEnabled)
{
QLineEdit::keyPressEvent(event);
}
}
/*
*@brief: 部件大小调整事件处理 (用来自动调整编辑框文本的margins)
*@author: 缪庆瑞
*@date: 2020.04.11
*@param: event:大小事件
*/
void BaseLineEdit::resizeEvent(QResizeEvent *event)
{
QLineEdit::resizeEvent(event);
autoAdjustTextMargins();
}
/*
*@brief: 根据布局的边距和部件的宽度,自动调整编辑框文本的margins
*@author: 缪庆瑞
*@date: 2020.04.11
*/
void BaseLineEdit::autoAdjustTextMargins()
{
if(leftRightLayout)
{
int leftMargin = leftWidget?leftWidget->width():0;
int rightMargin = rightWidget?rightWidget->width():0;
leftMargin += leftRightLayout->contentsMargins().left();
rightMargin += leftRightLayout->contentsMargins().right();
//qDebug()<<leftMargin<<rightMargin;
//设置编辑框的margin 确保文本不会被部件遮挡
this->setTextMargins(leftMargin,0,rightMargin,0);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。