【发布时间】:2019-02-02 20:58:59
【问题描述】:
我有一个字符串。例如:
QString myString = "Today is Tuesday";
要求是:当用户键入一个字符串时,如果该字符串包含在myString中,那么myString中的那部分应该是粗体,并且不区分大小写(Qt::CaseInsensitive),但是@987654325的格式@ 应保留(大写字符应为大写,小写字符应为小写)。
例如:
- 用户类型:
tu-> 今天是星期二esday - 用户类型:
ES-> 今天是星期二esday - 用户类型:
aY-> Today 是星期二ay
这是我的功能:
void myClass::setBoldForMatching( const QString &p_text )
{
QRegExp regExp( p_text, Qt::CaseInsensitive, QRegExp::RegExp );
if ( !p_text.isEmpty() )
{
if ( myString.contains( regExp ) )
{
myString = myString.replace( p_text, QString( "<b>" + p_text + "</b>" ), Qt::CaseInsensitive );
}
}
}
这个函数是错误的,因为
用户类型 t -> today 是 tuesday。
我需要的是T今天是T星期二
我应该如何更新我的函数?
【问题讨论】:
-
你没有描述所有可能的情况。如果 myString 将是“Today is today”并且用户键入“To”会发生什么
-
这个应该是粗体的文本在哪里?是
QTextEdit还是别的什么?使用QTextDocument和QTextCursor可以比添加这个html标签更有效和简单。