此示例是官方QT 上的 Creating a Qt Widget Based Application
文档:https://doc.qt.io/qtcreator/zh/creator-writing-program.html
这个是适合入门的教程,可以跟着一步步来,这里我就不细说了,但是有几个问题
1、布局
对入门者来说,布局介绍的不足,一句话带过了,尤其是布局搞错了后,如何恢复正常,需要自己摸索
几个小白需要注意的地方:
1)、右侧选中某个布局后,才能对这个布局整体操作,比如拉伸,挪动等,否则,很可能移动某个控件,破坏了布局
2)、垂直布局、水平布局重调时,有时需要把整个子布局先拖离原布局,然后再试着把其它控件放进去后,适配顶层布局后,再把这个子布局拖进去,适配顶层布局

2、你照着做完了,很可能达不到搜索的目的

原因1)、焦点问题,需要把焦点重定位到文本上,原文档代码没有这个
找到后,加个设置焦点就可以
ui->textEdit->setFocus();
原因2)、原文的例子是 FindWholeWords 参数,这导致中文找不到,FindWholeWords是以空格 标点分开的做整个单词,不适应中文,可以把这个参数去掉
ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
修改后
cpp
void TextFinder::on_findButton_clicked()
{
QString searchString=ui->lineEdit->text();
bool bFound = ui->textEdit->find(searchString);// ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
if (bFound)
{
qDebug() << "找到了 '" << searchString << "'";
// 【关键修复】将焦点设置回 textEdit,这样你才能看到光标
ui->textEdit->setFocus();
// 确保找到的文本在视图中是可见的
// 获取 textEdit 的光标
// QTextCursor cursor = ui->textEdit->textCursor();
// 滚动视图,使光标所在的矩形区域可见
// ui->textEdit->ensureCursorVisible();
}
else
{
qDebug() << "未找到 '" << searchString << "'";
// 可以给用户一个提示
// QMessageBox::information(this, "Not Found", "The text was not found.");
}
}
cpp
void TextFinder::LoadTextFile()
{
QFile inputFile(":/input.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
QString line=in.readAll();
inputFile.close();
// 直接设置一个你知道内容的字符串
// QString line = "This is a test. This is only a test.";
ui->textEdit->setPlainText(line);
ui->textEdit->moveCursor(QTextCursor::Start);
// QTextCursor cursor=ui->textEdit->textCursor();
// cursor.movePosition(QTextCursor::Start,QTextCursor::MoveAnchor,1);
}