找回密码
 立即注册
收起左侧
楼主: yafeilinux

第7篇 基础(七)实现Qt文本查找功能

59
回复
38950
查看
  [复制链接]
累计签到:6 天
连续签到:1 天
2015-5-30 09:30:36 显示全部楼层
不知道为什么,if(!ui->textEdit->find(str, QTextDocument::FindBackward)) 我设置参数为FindBackward就能倒序查找,但去掉或者用别的参数运行结果都是查找不到
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2015-6-2 22:13:39 显示全部楼层
齐御风 发表于 2015-5-30 09:30
不知道为什么,if(!ui->textEdit->find(str, QTextDocument::FindBackward)) 我设置参数为FindBackward就能 ...

你看下位置是不是不对。
回复 支持 反对

使用道具 举报

尚未签到

2015-6-4 15:47:56 显示全部楼层
很有用的分享,值得推荐
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-6-8 16:24:45 显示全部楼层
请问创建对话框时findDlg = new QDialog(this);为什么不像创建布局管理器QVBoxLayout *layout= new QVBoxLayout(findDlg)那样用QDialog *findDlg = new QDialog(this)
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2015-6-10 23:12:29 显示全部楼层
一土三石 发表于 2015-6-8 16:24
请问创建对话框时findDlg = new QDialog(this);为什么不像创建布局管理器QVBoxLayout *layout= new QVBoxLa ...

因为这个findDlg在.h文件中定义了,所以这里不需要写成QDialog *findDlg 形式;而且,如果直接用QDialog *findDlg = new QDialog(this)在其他函数中不好再次使用。
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2015-8-3 15:50:16 显示全部楼层
codemoon 发表于 2014-6-8 21:36
照着做完了,感觉还好。不过要是能加上“查找到内容之后,把焦点切换到textEdit那里” 就更好了,目前查找 ...
  1.      if (ui->textEdit->find(str, QTextDocument::FindBackward | QTextDocument::FindCaseSensitively))
  2.      {
  3.        activateWindow();
  4.      }else{
  5.          QMessageBox::warning(this, tr("查找"),
  6.                   tr("找不到%1").arg(str));
  7.         //查找结束时使插入符移到最后
  8.         ui->textEdit->moveCursor(QTextCursor::EndOfLine);
  9.      }
复制代码
回复 支持 反对

使用道具 举报

累计签到:5 天
连续签到:1 天
2015-9-22 19:59:36 显示全部楼层
看一下,查找怎么弄,谢谢老师.
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2015-11-25 12:21:36 显示全部楼层
讲的很浅显,适合我们初学者!赞一个
回复 支持 反对

使用道具 举报

累计签到:6 天
连续签到:1 天
2016-2-23 14:32:51 显示全部楼层
不用考虑内存泄露吗,还是说Qt内部有什么机制?
QLineEdit *findLineEdit;
QDialog *findDlg;
QPushButton *btn= new QPushButton(tr("查找下一个"), findDlg);
QVBoxLayout *layout= new QVBoxLayout(findDlg);
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2016-2-23 14:35:51 显示全部楼层
wasai 发表于 2016-2-23 14:32
不用考虑内存泄露吗,还是说Qt内部有什么机制?
QLineEdit *findLineEdit;
QDialog *findDlg;

Qt有对象树机制,就是说程序退出时会销毁所有子对象。
回复 支持 反对

使用道具 举报

累计签到:6 天
连续签到:1 天
2016-2-23 14:39:37 显示全部楼层
yafeilinux 发表于 2016-2-23 14:35
Qt有对象树机制,就是说程序退出时会销毁所有子对象。

就是说一般来说不用考虑内存泄露了?谢谢
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2016-2-23 14:41:17 显示全部楼层
wasai 发表于 2016-2-23 14:39
就是说一般来说不用考虑内存泄露了?谢谢

注意一定要有父对象的时候才不用管,如果自己随便new一下,还是要注意delete的。
回复 支持 反对

使用道具 举报

尚未签到

2016-3-15 11:28:03 显示全部楼层
不看不知道,看了才知道,好帖
回复 支持 反对

使用道具 举报

累计签到:25 天
连续签到:1 天
2016-3-22 14:52:33 显示全部楼层
在此基础上,如何让被查找的内容高亮显示呢?
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2016-3-23 11:46:17 显示全部楼层
贝贝456 发表于 2016-3-22 14:52
在此基础上,如何让被查找的内容高亮显示呢?

使用QSyntaxHighlighter,详细看帮助手册。

例如:
QTextEdit *editor = new QTextEdit;
MyHighlighter *highlighter = new MyHighlighter(editor->document());
回复 支持 反对

使用道具 举报

累计签到:18 天
连续签到:1 天
2016-4-3 21:21:23 显示全部楼层
运行时显示这个错误是什么原因?
E:\QT\MyMainWindow\mainwindow.h:
58: 错误:'QLineEdit' does not name a type
回复 支持 反对

使用道具 举报

累计签到:851 天
连续签到:1 天
2016-4-3 21:48:03 显示全部楼层
caorh_mh 发表于 2016-4-3 21:21
运行时显示这个错误是什么原因?
E:\QT\MyMainWindow\mainwindow.h:
58: 错误:'QLineEdit' does not name a ...

你看下mainwindow.h文件的第58行,那个QLineEdit使用是否有问题,或者是否包含了该头文件。
回复 支持 反对

使用道具 举报

累计签到:18 天
连续签到:1 天
2016-4-4 22:34:57 显示全部楼层
我是照抄示范案例代码的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

累计签到:9 天
连续签到:1 天
2016-4-5 17:36:05 显示全部楼层
很有帮助,特别适合初学者
回复 支持 反对

使用道具 举报

累计签到:6 天
连续签到:1 天
2016-4-22 21:51:52 显示全部楼层
好棒!!!!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册