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); 当然会挂掉。
然后我做了改进
总算是顺利完成。
上面是一个 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(); // 警报 } }
总算是顺利完成。
相关文章推荐
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
- 基于QT-widget的电子词典实现
- QT下 TableWidget 实现右键菜单栏,以及TableWidget整体美化工作。
- Qt qtablewidget 实现筛选功能,显示符合条件的整行信息
- qt listWIdget设置可以编辑
- Qt QTreeWidget 树形结构实现 .
- Qt QListWidget拖拽实现
- Qt QTreeWidget 树形结构实现
- Qt QTreeWidget 树形结构实现(上)
- Qt QListWidget实现图片缩略图列表
- Qt如何隐藏ListWidget的滚动条
- 基于Qt的轨迹还原之二:用QGLWidget实现功能
- Qt中,当QDockWidget的父窗口是一个不可以拖动的QTabWidget的时候实现拖动的方法
- Qt QTreeWidget 树形结构实现( 下)
- Qt QTreeWidget 树形结构实现
- Qt动态布局,多个窗口使用同一个widget如何实现。
- Qt实现不同Treewidget之间拖拽
- 在Qt5.4中如何实现QOpenGLWidget和QPainter混合编程
- qt 写类似通话记录,通信录这样的东西可以用listwidget