您的位置:首页 > 编程语言 > Qt开发

Qt 实现listWidget中项的检索

2013-04-10 12:08 260 查看
写了一个槽函数,实现这样的功能,如图:



上面是一个 lineEdit,下面是一个listWidget。当我在lineEdit输入文字时,在listWidget中能根据输入检索到相关项,并显示。

刚开始的时候,我是这样做的



这样做的结果就是程序执行到 ui->listWidget->addItem(item);

程序会出现错误,然后挂掉!

后来发现了原因:

因为 QList<QListWidgetItem *> list;

这个list只是一个指针,指向listWidget里的项

如果ui->listWidget->clear();

那么list里的那些item就毁掉了。
这时候调用ui->listWidget->addItem(item); 当然会挂掉。

然后我做了改进

void Dialog::searchListWidgetItem(QString str)
{
ui->listWidget->clear();
QStringList wordList;
wordList << "alpha" << "omega" << "omicron" << "zeta"<<"aa"<<"bb"<<"cc";
ui->listWidget->addItems(wordList);

QList<QListWidgetItem *> list;
list =  ui->listWidget->findItems(str,Qt::MatchStartsWith);
//若,str == ""  findItems函数 能返回全部项
QStringList strList;
if(!list.isEmpty())
{
for(int i=0;i<list.length();i++)
{
strList<<list.at(i)->text();
}
ui->listWidget->clear();
for(int i =0;i<strList.length();i++)
{
ui->listWidget->addItem(strList.at(i));
}
}
else
{
ui->lineEdit->backspace(); //当查询不到时backspace
qApp->beep();   // 警报
}
}


总算是顺利完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: