

关于QLineEdit右侧添加图标(点击查看密码,点击隐藏密码)如何优化图标的位置呢?
source link: https://bbs.csdn.net/topics/399173113
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

具体代码如下:
class pwdLineEdit : public QLineEdit
{
Q_OBJECT
public:
explicit pwdLineEdit(QWidget *parent = nullptr);
~pwdLineEdit();
signals:
public slots:
};
//pwdLineEdit
pwdLineEdit::pwdLineEdit(QWidget *parent)
:QLineEdit(parent)
{
setStyleSheet("QLineEdit{background:transparent;border-image:url(:/res/pwd/lineEditBkg.png);border-style:solid;color:#003DA6;padding-left: +8px;border-color:#232423;font:11px ""SimHei"";}"
"QLineEdit:hover{border: 1px solid #014099;}"
"QLineEdit:focus{border: 1px solid #014099;}"
"QLineEdit:hover{border: 1px solid #014099;}"
"QLineEdit QPushButton {width: 16px;height: 16px;qproperty-flat: true;margin-right: 4px;border: none;border-width: 0;border-image: url(:/res/pwd/password_hide.png) 0 0 0 0 stretch stretch;background: transparent;}"
"QLineEdit QPushButton::checked {border-image: url(:/res/pwd/password_show.png) 0 0 0 0 stretch stretch;}");
setEchoMode(QLineEdit::Password);
QPushButton* button = new QPushButton();
button->setCursor(Qt::PointingHandCursor);
button->setCheckable(true);
connect(button, &QPushButton::toggled, [this](bool checked) {
if (checked)
{
setEchoMode(QLineEdit::Normal);
}
else
{
setEchoMode(QLineEdit::Password);
}
});
QHBoxLayout* layout = new QHBoxLayout();
layout->addStretch();
layout->addWidget(button);
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
}
pwdLineEdit::~pwdLineEdit()
{
}
具体效果图如下:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。
我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大
大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!
Quote: 引用 3 楼 这是一个正经昵称 的回复:
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!
好家伙项目要求必须用border-image设置背景?我大概知道你们应用场景了
非得把控件放布局里的话你可以试试把按钮放一个QWIdget上再把QWiget放布局里,然后控制按钮大小。
Quote: 引用 4 楼 lwei2 的回复:
Quote: 引用 3 楼 这是一个正经昵称 的回复:
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!好家伙项目要求必须用border-image设置背景?我大概知道你们应用场景了
非得把控件放布局里的话你可以试试把按钮放一个QWIdget上再把QWiget放布局里,然后控制按钮大小。
大佬,还是很感谢你的回复,我会再试试的。
Quote: 引用 4 楼 lwei2 的回复:
Quote: 引用 3 楼 这是一个正经昵称 的回复:
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!好家伙项目要求必须用border-image设置背景?我大概知道你们应用场景了
非得把控件放布局里的话你可以试试把按钮放一个QWIdget上再把QWiget放布局里,然后控制按钮大小。
大佬,我这样写的,你看有啥不对吗?感觉和截图中差不多。还劳烦再指点一下:
installEventFilter(this);
setEchoMode(QLineEdit::Password);
QWidget *pWidget = new QWidget();
QPushButton *button = new QPushButton(pWidget);
button->setCursor(Qt::PointingHandCursor);
button->setCheckable(true);
connect(button, &QPushButton::toggled, [this](bool checked) {
if (checked)
{
setEchoMode(QLineEdit::Normal);
}
else
{
setEchoMode(QLineEdit::Password);
}
});
QHBoxLayout* layout = new QHBoxLayout();
layout->addStretch();
layout->addWidget(button);
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
这个图标,能不能向左移动一些距离,因为太靠右了,看起来感觉不是很好。。。。
Quote: 引用 5 楼 这是一个正经昵称 的回复:
Quote: 引用 4 楼 lwei2 的回复:
Quote: 引用 3 楼 这是一个正经昵称 的回复:
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!好家伙项目要求必须用border-image设置背景?我大概知道你们应用场景了
非得把控件放布局里的话你可以试试把按钮放一个QWIdget上再把QWiget放布局里,然后控制按钮大小。大佬,我这样写的,你看有啥不对吗?感觉和截图中差不多。还劳烦再指点一下:
installEventFilter(this);
setEchoMode(QLineEdit::Password);
QWidget *pWidget = new QWidget();
QPushButton *button = new QPushButton(pWidget);
button->setCursor(Qt::PointingHandCursor);
button->setCheckable(true);
connect(button, &QPushButton::toggled, [this](bool checked) {
if (checked)
{
setEchoMode(QLineEdit::Normal);
}
else
{
setEchoMode(QLineEdit::Password);
}
});
QHBoxLayout* layout = new QHBoxLayout();
layout->addStretch();
layout->addWidget(button);
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
这个图标,能不能向左移动一些距离,因为太靠右了,看起来感觉不是很好。。。。
之前的意思是,你可以拿button放widget上,然后把widget放布局里,这样widget会被拉伸,button的大小和位置会被固定,图标自然不会变形。但是问题是按钮是固定位置,实际上并不一定在LineEdit的垂直中心。
所以你可以把widget换成一个垂直Layout,其上中下分3层,分别是Stretch,button,Stretch。
另外我要是你,我根本不会用这个布局,这个控件直接获取resize事件然后动态调整button位置就完事了。一般自己写一些布局的东西灵活运用。
多谢大佬耐心指点,我尝试过你说的方法:把widget换成一个垂直Layout,不过图标突然变到左侧了,可能是我对布局这个概念理解的不够深,目前还做到灵活。故,我只是做了以下修改:layout->setContentsMargins(5, -5, 15, -15);。还是很感谢你的帮忙。Quote: 引用 7 楼 lwei2 的回复:
Quote: 引用 5 楼 这是一个正经昵称 的回复:
Quote: 引用 4 楼 lwei2 的回复:
Quote: 引用 3 楼 这是一个正经昵称 的回复:
Quote: 引用 2 楼 lwei2 的回复:
Quote: 引用 1 楼 这是一个正经昵称 的回复:
不要用border-image 那个跟着控件大小走的。要么就把button大小固定成图片的比例。
大佬,刚刚试过了,把button固定成为:/res/pwd/password_show.png或:/res/pwd/password_hide.png,好像没有多大变化,和截图中的效果一样。
那个border-image背景图这个暂时不能更换了,因为项目需求限定了这个背景图片。。。我的意思是指定button的fixdsize
或者用seticon和seticonsize
没让你固定用一个图片或者换图片
border-image会把图绘制的跟控件一样大大佬,border-image这个背景是不能改了,项目要求。
至于你说的button的fixSize应该是setFixedSize这个吧。好像不怎么管用!!!好家伙项目要求必须用border-image设置背景?我大概知道你们应用场景了
非得把控件放布局里的话你可以试试把按钮放一个QWIdget上再把QWiget放布局里,然后控制按钮大小。大佬,我这样写的,你看有啥不对吗?感觉和截图中差不多。还劳烦再指点一下:
installEventFilter(this);
setEchoMode(QLineEdit::Password);
QWidget *pWidget = new QWidget();
QPushButton *button = new QPushButton(pWidget);
button->setCursor(Qt::PointingHandCursor);
button->setCheckable(true);
connect(button, &QPushButton::toggled, [this](bool checked) {
if (checked)
{
setEchoMode(QLineEdit::Normal);
}
else
{
setEchoMode(QLineEdit::Password);
}
});
QHBoxLayout* layout = new QHBoxLayout();
layout->addStretch();
layout->addWidget(button);
layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout);
这个图标,能不能向左移动一些距离,因为太靠右了,看起来感觉不是很好。。。。之前的意思是,你可以拿button放widget上,然后把widget放布局里,这样widget会被拉伸,button的大小和位置会被固定,图标自然不会变形。但是问题是按钮是固定位置,实际上并不一定在LineEdit的垂直中心。
所以你可以把widget换成一个垂直Layout,其上中下分3层,分别是Stretch,button,Stretch。
另外我要是你,我根本不会用这个布局,这个控件直接获取resize事件然后动态调整button位置就完事了。一般自己写一些布局的东西灵活运用。
匿名用户不能发表回复!
Recommend
-
34
-
37
对右侧交易的不解 - 左侧交易者好理解,认为现在已进入安全区域,不管到没到底,直接买进。右侧交易者什么时候买入?如果买入之后指数下跌创新低,是不是要被没买的右侧交易者嘲笑
-
31
就想问问右侧交易者,你进场了么? - 前段时间行情极度低迷,集思录上关于左侧右侧交易的争论比较多。最近两个交易日,上证涨了6个多点,不少个股也有10%以上的涨幅。就想问问右侧交易者,你进场了么?追涨了么,买了什么,买了多少?
-
9
在日常开发过程中,有时候会遇到需要在app中嵌入网页,此时使用WebView实现效果,但在默认情况下是无法点击图片查看大图的,更无法保存图片。本文将就这一系列问题的实现进行说明。 项目的知识点: 加载网页后如何捕捉网页中的图...
-
6
点击查看《头皮洗护行业洞察报告》,揭秘行业新机会点! 作者:
-
10
深商菁英女神丨点击查看了不起的她们@国富黄金、远鹏装饰、艾美集团、远东妇儿 青年有担当,国家有力量。在“双区”驱动、“双区”叠加的发展背景下,借助其带来的...
-
5
上海有100余家互联网医院,点击查看线上问诊操作指南 澎湃 2022年04月27日 08:15 4月25日10:00,上海市举行新冠肺炎疫情防控工作新闻发布会...
-
8
点击查看,跨境电商常用支付方式! ...
-
9
亚马逊黑五再创历史新纪录!点击查看跨境平台的明争暗斗 ...
-
3
V2EX › 分享发现 解决 Chrome 标签页过多的难以点击/查看的问题 非 OneTab
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK