Nov 11

出现这种问题一般是因为缺少解码器,可以选择重装w32codecs,还有libstdc++6库,但是有时候还是会出现错误,比如:

Error: Could not open trquired directshow codec drvc.bundle contents macos drvc

这个错误是缺少drvc.dll,drv43260.dll,/usr/lib/codecs/drvc.bundle/Contents/MacOS/drvc

对于前两个文件,直接google一下,下载后放到/usr/lib/codecs/目录下

至于第三个就需要把drvc.dll的文件名改成drvc,然后放到/usr/lib/codecs/drvc.bundle/Contents/MacOS/目录下(如果没有就创建)。

然后就OK了。

Nov 9

一,操作字符串:

QString str2 = "Hello";
这一行调用的QString类的构造函数是:
QString::QString(const char *str)
这个传递进来的const char *str指针以会被函数QString::fromAscii()转化为Unicode编码。默认情况下fromAscii()函数会反字符当作
Latin-1编码处理。这就是为什么我们使用中文的时候会出现乱码。一种解决方法是使用 QTextCodec::setCodecForCString()函数改变
QString:fromAscii()函数的默认行为。另一种方法是在编译的时候定义宏QT_CAST_FROM_ASCII来屏蔽上面的这个构造函数。如果程序的所有字符都必须经过 QObject::tr()函数处理,那么使用这个宏屏蔽掉这个构造函数会很方便。

QString::append()函数和+=操作符有相同的作用,就是将一个字符串追加到另一个字符串的末尾。

QString::sprintf()函数与C++中的sprintf()函数一样,可以将多个字符串及其他类型的数据以一定的格式组织顾一个字符串:
QString::sprintf("%s was born in %d","John",1988);

QString::arg()函数提供第三种字符串组合方式。这个函数是类型安全并且完全支持Unicode的。也是最常使用的:QString str = QString("%1 was born %2.").arg("John").arg("1982");

QString::insert()函数在源字符串的指定位置插入另一个字符串。

QString::prepend()函数在源字符串的开头位置插入另一个字符串。

QString;:replace()函数用指定的字符串替换源字符串中的某些字符。

QString::trimmed()函数移除字符串两端的空白字符。

QString::simplifed()除了移除字符串两端的空白字符外,还会使用单个空格字符代替字符串中出现的空白字符。

二,查询字符串数据:

QString::startsWidth("xxx",Qt::CaseSensitive)判断一个字符串是否以某个字符串开头。第一个参数是指定的字符串。第二个参数指定是否大小写敏感(默认敏感)。

QString::endsWidth()判断一个字符串否以某个字符是否以某个字符串结尾。

QString::contains()判断一个指定的字符串是否出现过。

三,比较字符串:

operator<(const QString&)、operator<=(const QString&)、operator==(const QString&)、operator>=(const QString&)、operator>(cons QString&)。

QString::localeAwareCompare(const QString&,const QString&)静态函数。比较两个字符串,小于返回负数;等于返回零;大于返回正数。该函数比较是基于本地字符集的,通常平台相关。

QString::compare(const QString&,const QString&,Qt::CaseSensitivity)静态函数可以指定是否进行大小写敏感比较。大小写敏感比较是完全基于字符的Unicode编码值的。