转载: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自动补全以及控件提升的更多相关文章

  1. Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全

    导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛.一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器.QLineEdit本身使用方法也很简单,无需过多的设置就能 ...

  2. 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

    最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...

  3. VA自动补全QT

    发现用了一下,VA不能把QT的东西进行代码自动补全.于是要动下小手脚. 1.在Windows系统环境变量下增加 QTDIR = 你QT的安装目录. 2启动VS->工具->选项->项目 ...

  4. 【转】 Qt如何设置自动补全快捷键

    原文:https://blog.csdn.net/u014597198/article/details/52797435 在用Qt编程的时,它默认是以“CTRL+空格”来作为自动补全的快捷键的,但是这 ...

  5. QT Creator 代码自动补全

    QT Creator 代码自动补全 用QT Creater编程,如果没有自动补全是很痛苦的事情,于是便查阅了QT的文档,发现CTRL+SPACE是自 动补全的快捷键;但是在 Creater里使用居然没 ...

  6. VA对于开发QT是神器,VA自动补全QT

    我怎么就忘了,VA也可以适用于VS下开发QT程序.其中QT的头文件自己增加,主要是: C:\Qt\4.8.6_2008\include 但还有一些特殊类不认识,所以还得继续增加: C:\Qt\4.8. ...

  7. 练习笔记:net,JqueryUI实现自动补全功能

    1.首先建立个空的Web项目 2.将下载好的JqueryUI文件保存到JS文件加下 3.引入JS文件 <link href="JS/css/ui-lightness/jquery-ui ...

  8. JAVA学习笔记(1)—— eclipse自动补全和主题及字体配置

    1.自动补全功能 (1)打开 Eclipse -> Window -> Perferences (2)选择Java -> Editor -> Content Assist -& ...

  9. 成长笔记--解决Eclipse 变量名的自动补全问题

    大家使用eclipse敲代码的时候,是不是都被这样一个问题困扰着.就是键入一个变量名的时候,会自动提示补全:在你的变量名后面加上类型的名字!这个时候,你就必须键入Esc才不会自动补全你的变量,如果你键 ...

随机推荐

  1. [MacOSX]

    When i run svn up in the folder, i got these error: svn: Error converting entry in directory 'XXXXX' ...

  2. Visual Studio 2012 怪异的自动重启

    学生在做项目的过程中遇到这种问题: -------------- 用 Visual Studio 2012  开发W中eb 项目时,最近总是莫名其妙的自动重启. 后来试了一下,发现是只要在页面中输入 ...

  3. SQL Server session故障排查

    --根据作业名 查找session id select a.spid,a.blocked,b.name,substring(replace(a.PROGRAM_NAME,'SQLAgent - TSQ ...

  4. POJ - 2041Unreliable Message

    这里的算法非常简单,就是“模拟”,注意编写每个传令官的算法时先分开测试,放在一起就会混淆. POJ - 2041Unreliable Message Time Limit: 1000MS Memory ...

  5. C语言初学者代码中的常见错误与瑕疵(3)

    问题: n-1位数字 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入: 第一行为M,表示测试数据组数. 接下来M行,每行包含一个测 ...

  6. 【GDI+】一些规则多边形分离的问题

    在近期的工作中,需要做一样工作:将一些有规则的图形,进行适当的分离,以达到不重叠的问题. 首先组成图形的点都可以是按照逆时针排好序的. 规则的图形可以大致分为三类: A :两个点组成的线 或者 四个点 ...

  7. expandlistview

    package com.exaple.zhonghe2; import java.sql.SQLData;import java.util.ArrayList;import java.util.Has ...

  8. android 项目学习随笔十九(MD5)

    import java.security.MessageDigest; public class MD5Encoder { public static String encode(String str ...

  9. Linux字符设备驱动结构(一)--cdev结构体、设备号相关知识机械【转】

    本文转载自:http://blog.csdn.net/zqixiao_09/article/details/50839042 一.字符设备基础知识 1.设备驱动分类 linux系统将设备分为3类:字符 ...

  10. Keepalived原理及配置应用总结

    Keepalived——保持存活,在网络里的含义就是保持在线.Keepalived提供高可用和热备的功能,用来防止单点故障的发生. 1.VRRP协议基本原理介绍 Keepalived实现的基础是VRR ...