qlineedit自动补全_qlineedit只能输入数字

qlineedit自动补全_qlineedit只能输入数字转载 http www cnblogs com csuftzzk p qss lineedit completer html utm source tuicool amp utm medium referral 显示密码 显示密码时 利用 lineedit password character 属性更改密文显示字符内容 QLineEdit echoMode 2

转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=referral

显示密码

显示密码时,利用lineedit-password-character属性更改密文显示字符内容。

QLineEdit[echoMode="2"] { 

lineedit-password-character: 35; /*35,这是一个ASCII码值,在ASCII码中对应字符为‘#’*/
}

自动补全

通过不断修改QCompleter的模型QStandardItemModel实现自动补全。

m_model = new QStandardItemModel(0, 1, this);
m_completer = new QCompleter(m_model, this);
ui.lineEdit->setCompleter(m_completer);
//将信号activated()连接到槽onEmailChoosed()。当用户用鼠标选择了某一项之后就把选中的项更新到文本框中,补全完成。
connect(m_completer, SIGNAL(activated(const QString&)), this, SLOT(onEmailChoosed(const QString&)));
//信号textChanged()连接到onTextChanged()用于更新Model中的数据。
connect(ui.lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(onTextChanged(const QString&)));
void ThemeRoller::onEmailChoosed(const QString& email)
{

ui.lineEdit->clear(); // 清除已存在的文本更新内容
ui.lineEdit->setText(email);
}
void ThemeRoller::onTextChanged(const QString& str)
{

if (str.contains("@")) // 如果已经输入了@符号,我们就停止补全了。因为到了这一步,我们再补全意义也不大了。
{

return;
}
QStringList strlist;
strlist << "@163.com" << "@qq.com" << "@gmail.com" << "@hotmail.com" << "@126.com";
m_model->removeRows(0, m_model->rowCount()); // 先清楚已经存在的数据,不然的话每次文本变更都会插入数据,最后出现重复数据
for (int i = 0; i < strlist.size(); ++i)
{

m_model->insertRow(0);
m_model->setData(m_model->index(0, 0), str + strlist.at(i));
}
}
编程小号
上一篇 2025-01-27 09:33
下一篇 2025-03-21 08:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/135124.html