QT笔记之QLineEdit自动补全以及控件提升
转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=referral
转载:http://blog.csdn.net/starcloud_zxt/article/details/5186489
转载:http://blog.sina.com.cn/s/blog_a6fb6cc90101gu7w.html
一、窗口类.h中
用到的头文件
#include <QStandardItemModel>
//自动补全
QStandardItemModel* m_Model ;
QCompleter* m_completer;
void onEmailChoosed(const QString& email);
void onTextChanged(const QString& str);
.cpp中
#include <QCompleter>
构造函数中
m_Model = new QStandardItemModel(, , this);
m_completer = new QCompleter(m_Model, this); ui.userEdit->setCompleter(m_completer); connect(m_completer, SIGNAL(activated(const QString&)), this, SLOT(onEmailChoosed(const QString&)));
connect(ui.userEdit, SIGNAL(textChanged(const QString&)), this, SLOT(onTextChanged(const QString&)));
void QT_Test::onEmailChoosed(const QString& email)
{
ui.userEdit->clear(); // 清除已存在的文本更新内容
ui.userEdit->setText(email);
} void QT_Test::onTextChanged(const QString& str)
{
if (str.contains("@")) // 如果已经输入了@符号,我们就停止补全了。因为到了这一步,我们再补全意义也不大了。
{
return;
}
QStringList strlist;
strlist << "@163.com" << "@qq.com" << "@gmail.com" << "@hotmail.com" << "@126.com"; m_Model->removeRows(, m_Model->rowCount()); // 先清楚已经存在的数据,不然的话每次文本变更都会插入数据,最后出现重复数据
for (int i = ; i < strlist.size(); ++i)
{
m_Model->insertRow();
m_Model->setData(m_Model->index(, ), str + strlist.at(i));
}
}
二、Qt自定义密码框,先显示后隐藏
转载:http://blog.csdn.net/caoshangpa/article/details/50978164
转载:http://www.waitingfy.com/archives/1165
#ifndef QPASSWORDLINEEDIT_H
#define QPASSWORDLINEEDIT_H #include <QLineEdit>
class QPasswordLineEdit : public QLineEdit
{
Q_OBJECT
public:
//默认输入300毫秒后消失
QPasswordLineEdit(QWidget *parent,int timeout = );
~QPasswordLineEdit(); //获取真实的密码
QString getPassword();
//设置显示到隐藏的时间间隔
void setTimeout(int msec); private slots:
void slotCursorPositionChanged(int,int);
void slotTextEdited(const QString&);
//显示隐藏后的密码
void slotDisplayMaskPassword(); private:
//获取隐藏后的密码,这里为星号
QString getMaskPassword(); private:
int mTimeout;
QString mLineEditText;
//到最后一个字符的长度
int mLastCharCount;
}; #endif // QPASSWORDLINEEDIT_H
#include "qpasswordlineedit.h"
#include <QTimer>
#include <QDebug>
QPasswordLineEdit::QPasswordLineEdit(QWidget *parent,int timeout) : QLineEdit(parent)
{
mTimeout = timeout;
mLineEditText = "";
mLastCharCount = ;
connect(this,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(slotCursorPositionChanged(int,int)));
connect(this,SIGNAL(textEdited(const QString&)),this,SLOT(slotTextEdited(const QString&)));
} QPasswordLineEdit::~QPasswordLineEdit()
{ } void QPasswordLineEdit::slotCursorPositionChanged(int oldPos,int newPos)
{
if(oldPos>=- && newPos>= )
{
if(newPos>oldPos)
{
QTimer::singleShot(mTimeout,this,SLOT(slotDisplayMaskPassword()));
}
else
{
this->setCursorPosition(oldPos);
}
}
}
void QPasswordLineEdit::slotDisplayMaskPassword()
{
this->setText(getMaskPassword());
} void QPasswordLineEdit::slotTextEdited(const QString& text)
{
if(text.count()>mLastCharCount)//输入
{
mLineEditText.append(text.right());
}
else if(text.count()<mLastCharCount)//删除
{
mLineEditText.remove(mLineEditText.count()-,);
}
mLastCharCount = mLineEditText.count();
} QString QPasswordLineEdit::getPassword()
{
return mLineEditText;
}
void QPasswordLineEdit::setTimeout(int msec)
{
mTimeout = msec;
} QString QPasswordLineEdit::getMaskPassword()
{
QString mask = "";
int count = this->text().length();
if(count>)
{
for(int i=;i<count;i++)
{
mask += "*";
}
}
return mask;
}
选中密码编辑框,然后右键,在弹出菜单中选择提升
点击提升就完成了,是不是非常简单
QT笔记之QLineEdit自动补全以及控件提升的更多相关文章
- Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛.一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器.QLineEdit本身使用方法也很简单,无需过多的设置就能 ...
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...
- VA自动补全QT
发现用了一下,VA不能把QT的东西进行代码自动补全.于是要动下小手脚. 1.在Windows系统环境变量下增加 QTDIR = 你QT的安装目录. 2启动VS->工具->选项->项目 ...
- 【转】 Qt如何设置自动补全快捷键
原文:https://blog.csdn.net/u014597198/article/details/52797435 在用Qt编程的时,它默认是以“CTRL+空格”来作为自动补全的快捷键的,但是这 ...
- QT Creator 代码自动补全
QT Creator 代码自动补全 用QT Creater编程,如果没有自动补全是很痛苦的事情,于是便查阅了QT的文档,发现CTRL+SPACE是自 动补全的快捷键;但是在 Creater里使用居然没 ...
- VA对于开发QT是神器,VA自动补全QT
我怎么就忘了,VA也可以适用于VS下开发QT程序.其中QT的头文件自己增加,主要是: C:\Qt\4.8.6_2008\include 但还有一些特殊类不认识,所以还得继续增加: C:\Qt\4.8. ...
- 练习笔记:net,JqueryUI实现自动补全功能
1.首先建立个空的Web项目 2.将下载好的JqueryUI文件保存到JS文件加下 3.引入JS文件 <link href="JS/css/ui-lightness/jquery-ui ...
- JAVA学习笔记(1)—— eclipse自动补全和主题及字体配置
1.自动补全功能 (1)打开 Eclipse -> Window -> Perferences (2)选择Java -> Editor -> Content Assist -& ...
- 成长笔记--解决Eclipse 变量名的自动补全问题
大家使用eclipse敲代码的时候,是不是都被这样一个问题困扰着.就是键入一个变量名的时候,会自动提示补全:在你的变量名后面加上类型的名字!这个时候,你就必须键入Esc才不会自动补全你的变量,如果你键 ...
随机推荐
- 插入多行数据和类似 select union 方法
Cite:http://blog.csdn.net/downmoon/article/details/5936706 [ruby] view plaincopyprint? Create table ...
- oracle热备份
1:热备份: SHUTDOWN IMMEDIATE; STARTUP MOUNT; alter database archivelog; --ALTER SYSTEM SET LOG_ARCHIVE_ ...
- Oracle游标总结
1.声明游标 declare teacher_id ); teacher_name ); teacher_title ); teacher_sex ); cursor teacher_cur is ; ...
- archlinux锁屏
启动管理器用的是 slim 发现锁屏可以用 slimlock
- linux与windows的文本文件之间的转换
在CentOS中需要安装一个软件包:tofrodos 包里包含的命令可以用包管理工具列出包里的文件. 以 CentOS 的 rpm 为例: rpm -ql tofrodos 在ArchLinux中需要 ...
- 给图像添加logo
#include <opencv2\opencv.hpp>#include"ProcessPixels.h"using namespace cv;using names ...
- 【GDI+】一些规则多边形分离的问题
在近期的工作中,需要做一样工作:将一些有规则的图形,进行适当的分离,以达到不重叠的问题. 首先组成图形的点都可以是按照逆时针排好序的. 规则的图形可以大致分为三类: A :两个点组成的线 或者 四个点 ...
- Spark实战2:Zeppelin的安装和SparkSQL使用总结
zeppelin是spark的web版本notebook编辑器,相当于ipython的notebook编辑器. 一Zeppelin安装 (前提是spark已经安装好) 1 下载https://zepp ...
- 在Win8下无法打开 hlp 帮助文件的问题
需要安装Win8针对该问题的补丁程序,并且修改注册表,详细的解决方案: http://support.microsoft.com/kb/917607/zh-cn#fixit4me
- iOS 学习笔记 三 (2015.03.05)
服务和特征都是用UUID来唯一标识的,UUID的概念如果不清楚请自行google,国际蓝牙组织为一些很典型的设备(比如测量心跳和血压的设备)规定了标准的service UUID(特征的UUID比较多, ...