【发布时间】:2019-05-28 09:31:39
【问题描述】:
我有两个价值列表。第一个是整数列表,第二个是字符串列表。我想根据 lineEdit 的最后内容显示这些不同的列表。例如,当用户输入 A => QCompleter 时,会显示字符串列表。如果用户输入 A1 => QCompleter 显示整数列表,因为输入的最后一个字符是 1。
我尝试这样:
void QtGuiApplication1::maFonction(QString text)
{
QString lastCaractor = text.mid(text.length() - 1, 1);
if (is_number(lastCaractor.toStdString()) == true)
{
QStringList list = { "1","2","7" };
StringCompleter->setModel(new QStringListModel(list, StringCompleter));
StringCompleter->setCompletionPrefix(lastCaractor);
}
else
{
QStringList list = { "AAAA","AA","BB","AC" };
StringCompleter->setModel(new QStringListModel(list, StringCompleter));
StringCompleter->setCompletionPrefix(lastCaractor);
}
}
bool QtGuiApplication1::is_number(const std::string& s)
{
std::string::const_iterator it = s.begin();
while (it != s.end() && std::isdigit(*it)) ++it;
return !s.empty() && it == s.end();
}
如果最后一个字符是数字 => QCompleter show me list = { "1","2","7" };
其他 => 列表 = { "AAAA","AA","BB","AC" };
【问题讨论】:
标签: c++ qt qlineedit qcompleter