转载: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. 解决Android抽屉被击穿问题

    1,创建一个抽屉DrawerLayout,在V4包下android.support.v4.widget.DrawerLayout,在要设置抽屉的布局中设置android:layout_gravity= ...

  2. 文本挖掘之特征选择(python 实现)

    机器学习算法的空间.时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法.维度规约可以分为两类: 特征选择(feature ...

  3. 9. 星际争霸之php设计模式--代理模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  4. 【crunch bang】 增加“菜单项”

    [右键菜单]->[Settings]->[Openbox]->[GUI Menu Editor] 挑选合适的位置,增加[菜单项],编辑内容.

  5. java - Annotation元数据

    Annotation元数据(一) 一.Annotation究竟是什么? 是java5.0中的新特征 数据的数据(元数据) Annotation和访问修饰符一样,应用于包.类型.构造方法.方法.成员变量 ...

  6. ipseccmd命令解析

    IPSec 首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了.TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大.下面就说说如何在命令行下控制IPSec. XP系统用 ...

  7. sqlserver常用调优脚本(转)

    (转)以备不时之需 最耗时的sql declare @n int set @n=500 ; with cte1 as(select a.*,t.*from sys.dm_exec_query_stat ...

  8. C#(winform)浏览按钮

    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();            //folderBrowser.SelectedPa ...

  9. JVM学习笔记(四)------内存调优【转】

    转自:http://blog.csdn.net/cutesource/article/details/5907418 版权声明:本文为博主原创文章,未经博主允许不得转载. 首先需要注意的是在对JVM内 ...

  10. Environment中针对的读写权限判断

    Android应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态,并且需要在AndroidManifes ...