wordlist.cpp
来自「Qt开发的GRE背单词软件」· C++ 代码 · 共 77 行
CPP
77 行
#include "WordList.h"
#include "MainWindow.h"
#include "UserSetting.h"
#include <QStringList>
bool EnglishList::contains(const QString& word) const {
return getSplitted().contains(word);
}
QString EnglishList::add(const QString& word)
{
QStringList list = getSplitted();
list << word;
list.sort();
return line = list.join(", ");
}
QString EnglishList::remove(const QString& word)
{
QStringList list = getSplitted();
int index = list.indexOf(word);
if(index < 0)
return line;
list.removeAt(index);
return line = list.join(", ");
}
QStringList EnglishList::getSplitted() const {
return line.split(", ", QString::SkipEmptyParts);
}
bool ChineseList::isChinese(const QString& text)
{
foreach(QChar ch, text)
if(isChineseChar(ch))
return true;
return false;
}
bool ChineseList::isChineseChar(const QChar& ch) {
return ch.toAscii() == 0; // urgly!! better way??
}
bool ChineseList::filtered(const QChar& ch)
{
const QString filteredChar = UserSetting::getInstance(MainWindow::userName)
->value("Other/filteredChar").toString();
return filteredChar.contains(ch) || !isChineseChar(ch);
}
QStringList ChineseList::getSplitted() const
{
QStringList result;
QString word;
for(int i=0; i<line.length(); ++i)
{
QChar ch = line.at(i);
if(filtered(ch))
{
if(!word.isEmpty()) // 1 word finished
{
result << word;
word.clear();
}
}
else // continue constructing a word
word += ch;
}
if(!word.isEmpty())
result << word;
return result;
}
QString ChineseList::getFiltered() {
return line = getSplitted().join(QObject::tr("、"));
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?