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才不会自动补全你的变量,如果你键 ...
随机推荐
- opscenter dashboard排错
系统环境 opscenter 5.2 centOS 6.6 cassandra 2.0.x 问题 opscenter上的dashboard监控cassandra集群一段时间(大约1天)后总会停止显示. ...
- MVC4中下拉菜单和单选框的简单设计方法
举例一: @Html.LabelFor(model => model.Gender) @Html.DropDownListFor(model => model.Gender, new[] ...
- js break continue
for 循环从 1 到 10 迭代变量 i.在循环主体中,if 语句将(使用取模运算符)检查 i 的值是否能被 5 整除.如果能被 5 整除,将执行 break 语句.alert 显示 "4 ...
- Ado.net连接池 sp_reset_connection 概念
什么是连接池? 正常情况下,每次访问数据库都会打开和关闭,中断物理连接后需要再次进行物理连接.这样操作会浪费资源 使用连接池,主要的区别在于,不需要中断物理连接,即每次中断请求时spid还是存在! 原 ...
- MapReduce之Writable相关类
当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化.Writable是Hadoop的序列化格式,Hadoop定义了这样一 ...
- 【优化AC】建立联系
建立联系 [试题描述] 新学期开始了,不料同学们在假期集体更换了电话,所以同学们只能重新建立联系. 班内一共有n位同学,他们一共建立了m次联系,老师想知道在同学们每次建立完一个联系后,一共有多少对同学 ...
- redmine plugin
http://wangsheng2008love.blog.163.com/blog/static/78201689200992064615770/
- linux设备驱动归纳总结(五):4.写个简单的LED驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-84693.html linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxx ...
- 【secureCRT】如何在secureCRT上设置常用的快捷输出按钮栏
转自:http://jingyan.baidu.com/article/5d6edee2f32de199eadeec25.html 方法/步骤 打开secureCRT软件,单击菜单栏上面的[查看] ...
- 160914、ionic指令简单布局
1) 添加引用类库(ionic样式和ionic js文件) 2) 标题栏,页脚栏,内容区 3) Js引入ionic类库,添加页面操作方法和对象 4) 数据初始化 5) Html页面绑定方法和对象 &l ...