/**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/ ** ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include class Widget : public QWidget { public: Widget(QWidget *parent = 0); void constCharPointer(); void constCharArray(); void characterReference(); void atFunction(); void stringLiteral(); void modify(); void index(); QString boolToString(bool b); void nullVsEmpty(); void appendFunction(); void argFunction(); void chopFunction(); void compareFunction(); void compareSensitiveFunction(); void containsFunction(); void countFunction(); void dataFunction(); void endsWithFunction(); void fillFunction(); void fromRawDataFunction(); void indexOfFunction(); void firstIndexOfFunction(); void insertFunction(); void isNullFunction(); void isEmptyFunction(); void lastIndexOfFunction(); void leftFunction(); void leftJustifiedFunction(); void leftRefFunction(); void midFunction(); void midRefFunction(); void numberFunction(); void prependFunction(); void removeFunction(); void replaceFunction(); void reserveFunction(); void resizeFunction(); void rightFunction(); void rightJustifiedFunction(); void rightRefFunction(); void sectionFunction(); void setNumFunction(); void simplifiedFunction(); void sizeFunction(); void splitFunction(); void splitCaseSensitiveFunction(); void sprintfFunction(); void startsWithFunction(); void toDoubleFunction(); void toFloatFunction(); void toIntFunction(); void toLongFunction(); void toLongLongFunction(); void toLowerFunction(); void toShortFunction(); void toUIntFunction(); void toULongFunction(); void toULongLongFunction(); void toUShortFunction(); void toUpperFunction(); void trimmedFunction(); void truncateFunction(); void plusEqualOperator(); void arrayOperator(); }; Widget::Widget(QWidget *parent) : QWidget(parent) { } void Widget::constCharPointer() { //! [0] QString str = "Hello"; //! [0] } void Widget::constCharArray() { //! [1] static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 }; QString str(data, 4); //! [1] } void Widget::characterReference() { //! [2] QString str; str.resize(4); str[0] = QChar('U'); str[1] = QChar('n'); str[2] = QChar(0x10e3); str[3] = QChar(0x03a3); //! [2] } void Widget::atFunction() { //! [3] QString str; for (int i = 0; i < str.size(); ++i) { if (str.at(i) >= QChar('a') && str.at(i) <= QChar('f')) qDebug() << "Found character in range [a-f]"; } //! [3] } void Widget::stringLiteral() { //! [4] QString str; if (str == "auto" || str == "extern" || str == "static" || str == "register") { // ... } //! [4] } void Widget::modify() { //! [5] QString str = "and"; str.prepend("rock "); // str == "rock and" str.append(" roll"); // str == "rock and roll" str.replace(5, 3, "&"); // str == "rock & roll" //! [5] } void Widget::index() { //! [6] QString str = "We must be bold, very bold"; int j = 0; while ((j = str.indexOf("", j)) != -1) { qDebug() << "Found tag at index position" << j; ++j; } //! [6] } //! [7] QString Widget::boolToString(bool b) { QString result; if (b) result = "True"; else result = "False"; return result; } //! [7] void Widget::nullVsEmpty() { //! [8] QString().isNull(); // returns true QString().isEmpty(); // returns true QString("").isNull(); // returns false QString("").isEmpty(); // returns true QString("abc").isNull(); // returns false QString("abc").isEmpty(); // returns false //! [8] } void Widget::appendFunction() { //! [9] QString x = "free"; QString y = "dom"; x.append(y); // x == "freedom" //! [9] //! [10] x.insert(x.size(), y); //! [10] } void Widget::argFunction() { //! [11] QString i; // current file's number QString total; // number of files to process QString fileName; // current file's name QString status = QString("Processing file %1 of %2: %3") .arg(i).arg(total).arg(fileName); //! [11] //! [12] //! [13] QString str; //! [12] str = "%1 %2"; str.arg("%1f", "Hello"); // returns "%1f Hello" str.arg("%1f").arg("Hello"); // returns "Hellof %2" //! [13] //! [14] str = QString("Decimal 63 is %1 in hexadecimal") .arg(63, 0, 16); // str == "Decimal 63 is 3f in hexadecimal" QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates)); str = QString("%1 %L2 %L3") .arg(12345) .arg(12345) .arg(12345, 0, 16); // str == "12345 12,345 3039" //! [14] } void Widget::chopFunction() { //! [15] QString str("LOGOUT\r\n"); str.chop(2); // str == "LOGOUT" //! [15] } void Widget::compareFunction() { int x = QString::compare("auto", "auto"); // x == 0 int y = QString::compare("auto", "car"); // y < 0 int z = QString::compare("car", "auto"); // z > 0 } void Widget::compareSensitiveFunction() { //! [16] int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive); // x == 0 int y = QString::compare("auto", "Car", Qt::CaseSensitive); // y > 0 int z = QString::compare("auto", "Car", Qt::CaseInsensitive); // z < 0 //! [16] } void Widget::containsFunction() { //! [17] QString str = "Peter Pan"; str.contains("peter", Qt::CaseInsensitive); // returns true //! [17] } void Widget::countFunction() { //! [18] QString str = "banana and panama"; str.count(QRegExp("a[nm]a")); // returns 4 //! [18] } void Widget::dataFunction() { //! [19] QString str = "Hello world"; QChar *data = str.data(); while (!data->isNull()) { qDebug() << data->unicode(); ++data; } //! [19] } void Widget::endsWithFunction() { //! [20] QString str = "Bananas"; str.endsWith("anas"); // returns true str.endsWith("pple"); // returns false //! [20] } void Widget::fillFunction() { //! [21] QString str = "Berlin"; str.fill('z'); // str == "zzzzzz" str.fill('A', 2); // str == "AA" //! [21] } void Widget::fromRawDataFunction() { //! [22] QRegExp pattern; static const QChar unicode[] = { 0x005A, 0x007F, 0x00A4, 0x0060, 0x1009, 0x0020, 0x0020}; int size = sizeof(unicode) / sizeof(QChar); QString str = QString::fromRawData(unicode, size); if (str.contains(QRegExp(pattern))) { // ... //! [22] //! [23] } //! [23] } void Widget::indexOfFunction() { //! [24] QString x = "sticky question"; QString y = "sti"; x.indexOf(y); // returns 0 x.indexOf(y, 1); // returns 10 x.indexOf(y, 10); // returns 10 x.indexOf(y, 11); // returns -1 //! [24] } void Widget::firstIndexOfFunction() { //! [25] QString str = "the minimum"; str.indexOf(QRegExp("m[aeiou]"), 0); // returns 4 //! [25] } void Widget::insertFunction() { //! [26] QString str = "Meal"; str.insert(1, QString("ontr")); // str == "Montreal" //! [26] } void Widget::isEmptyFunction() { //! [27] QString().isEmpty(); // returns true QString("").isEmpty(); // returns true QString("x").isEmpty(); // returns false QString("abc").isEmpty(); // returns false //! [27] } void Widget::isNullFunction() { //! [28] QString().isNull(); // returns true QString("").isNull(); // returns false QString("abc").isNull(); // returns false //! [28] } void Widget::lastIndexOfFunction() { //! [29] QString x = "crazy azimuths"; QString y = "az"; x.lastIndexOf(y); // returns 6 x.lastIndexOf(y, 6); // returns 6 x.lastIndexOf(y, 5); // returns 2 x.lastIndexOf(y, 1); // returns -1 //! [29] //! [30] QString str = "the minimum"; str.lastIndexOf(QRegExp("m[aeiou]")); // returns 8 //! [30] } void Widget::leftFunction() { //! [31] QString x = "Pineapple"; QString y = x.left(4); // y == "Pine" //! [31] } void Widget::leftJustifiedFunction() { //! [32] QString s = "apple"; QString t = s.leftJustified(8, '.'); // t == "apple..." //! [32] //! [33] QString str = "Pineapple"; str = str.leftJustified(5, '.', true); // str == "Pinea" //! [33] } void Widget::midFunction() { //! [34] QString x = "Nine pineapples"; QString y = x.mid(5, 4); // y == "pine" QString z = x.mid(5); // z == "pineapples" //! [34] } void Widget::numberFunction() { //! [35] long a = 63; QString s = QString::number(a, 16); // s == "3f" QString t = QString::number(a, 16).toUpper(); // t == "3F" //! [35] } void Widget::prependFunction() { //! [36] QString x = "ship"; QString y = "air"; x.prepend(y); // x == "airship" //! [36] } void Widget::removeFunction() { //! [37] QString s = "Montreal"; s.remove(1, 4); // s == "Meal" //! [37] //! [38] QString t = "Ali Baba"; t.remove(QChar('a'), Qt::CaseInsensitive); // t == "li Bb" //! [38] //! [39] QString r = "Telephone"; r.remove(QRegExp("[aeiou].")); // r == "The" //! [39] } void Widget::replaceFunction() { //! [40] QString x = "Say yes!"; QString y = "no"; x.replace(4, 3, y); // x == "Say no!" //! [40] //! [41] QString str = "colour behaviour flavour neighbour"; str.replace(QString("ou"), QString("o")); // str == "color behavior flavor neighbor" //! [41] //! [42] QString s = "Banana"; s.replace(QRegExp("a[mn]"), "ox"); // s == "Boxoxa" //! [42] //! [43] QString t = "A bon mot."; t.replace(QRegExp("([^<]*)"), "\\emph{\\1}"); // t == "A \\emph{bon mot}." //! [43] //! [86] QString equis = "xxxxxx"; equis.replace("xx", "x"); // equis == "xxx" //! [86] } void Widget::reserveFunction() { //! [44] QString result; int maxSize; bool condition; QChar nextChar; result.reserve(maxSize); while (condition) result.append(nextChar); result.squeeze(); //! [44] } void Widget::resizeFunction() { //! [45] QString s = "Hello world"; s.resize(5); // s == "Hello" s.resize(8); // s == "Hello???" (where ? stands for any character) //! [45] //! [46] QString t = "Hello"; t += QString(10, 'X'); // t == "HelloXXXXXXXXXX" //! [46] //! [47] QString r = "Hello"; r = r.leftJustified(10, ' '); // r == "Hello " //! [47] } void Widget::rightFunction() { //! [48] QString x = "Pineapple"; QString y = x.right(5); // y == "apple" //! [48] } void Widget::rightJustifiedFunction() { //! [49] QString s = "apple"; QString t = s.rightJustified(8, '.'); // t == "...apple" //! [49] //! [50] QString str = "Pineapple"; str = str.rightJustified(5, '.', true); // str == "Pinea" //! [50] } void Widget::sectionFunction() { //! [51] //! [52] QString str; //! [51] QString csv = "forename,middlename,surname,phone"; QString path = "/usr/local/bin/myapp"; // First field is empty QString::SectionFlag flag = QString::SectionSkipEmpty; str = csv.section(',', 2, 2); // str == "surname" str = path.section('/', 3, 4); // str == "bin/myapp" str = path.section('/', 3, 3, flag); // str == "myapp" //! [52] //! [53] str = csv.section(',', -3, -2); // str == "middlename,surname" str = path.section('/', -1); // str == "myapp" //! [53] //! [54] QString data = "forename**middlename**surname**phone"; str = data.section("**", 2, 2); // str == "surname" str = data.section("**", -3, -2); // str == "middlename**surname" //! [54] //! [55] QString line = "forename\tmiddlename surname \t \t phone"; QRegExp sep("\\s+"); str = line.section(sep, 2, 2); // s == "surname" str = line.section(sep, -3, -2); // s == "middlename surname" //! [55] } void Widget::setNumFunction() { //! [56] QString str; str.setNum(1234); // str == "1234" //! [56] } void Widget::simplifiedFunction() { //! [57] QString str = " lots\t of\nwhitespace\r\n "; str = str.simplified(); // str == "lots of whitespace"; //! [57] } void Widget::sizeFunction() { //! [58] QString str = "World"; int n = str.size(); // n == 5 str.data()[0]; // returns 'W' str.data()[4]; // returns 'd' str.data()[5]; // returns '\0' //! [58] } void Widget::splitFunction() { //! [59] QString str; QStringList list; str = "Some text\n\twith strange whitespace."; list = str.split(QRegExp("\\s+")); // list: [ "Some", "text", "with", "strange", "whitespace." ] //! [59] //! [60] str = "This time, a normal English sentence."; list = str.split(QRegExp("\\W+"), QString::SkipEmptyParts); // list: [ "This", "time", "a", "normal", "English", "sentence" ] //! [60] //! [61] str = "Now: this sentence fragment."; list = str.split(QRegExp("\\b")); // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ] //! [61] } void Widget::splitCaseSensitiveFunction() { //! [62] QString str = "a,,b,c"; QStringList list1 = str.split(","); // list1: [ "a", "", "b", "c" ] QStringList list2 = str.split(",", QString::SkipEmptyParts); // list2: [ "a", "b", "c" ] //! [62] } void Widget::sprintfFunction() { //! [63] size_t BufSize; char buf[BufSize]; ::snprintf(buf, BufSize, "%lld", 123456789LL); QString str = QString::fromAscii(buf); //! [63] //! [64] QString result; QTextStream(&result) << "pi = " << 3.14; // result == "pi = 3.14" //! [64] } void Widget::startsWithFunction() { //! [65] QString str = "Bananas"; str.startsWith("Ban"); // returns true str.startsWith("Car"); // returns false //! [65] } void Widget::toDoubleFunction() { //! [66] QString str = "1234.56"; double val = str.toDouble(); // val == 1234.56 //! [66] //! [67] bool ok; double d; d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456 //! [67] //! [68] d = QString( "1234,56" ).toDouble(&ok); // ok == false d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56 //! [68] //! [69] d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false d = QString( "1234567.89" ).toDouble(&ok); // ok == true //! [69] } void Widget::toFloatFunction() { //! [71] QString str1 = "1234.56"; str1.toFloat(); // returns 1234.56 bool ok; QString str2 = "R2D2"; str2.toFloat(&ok); // returns 0.0, sets ok to false //! [71] } void Widget::toIntFunction() { //! [72] QString str = "FF"; bool ok; int hex = str.toInt(&ok, 16); // hex == 255, ok == true int dec = str.toInt(&ok, 10); // dec == 0, ok == false //! [72] } void Widget::toLongFunction() { //! [73] QString str = "FF"; bool ok; long hex = str.toLong(&ok, 16); // hex == 255, ok == true long dec = str.toLong(&ok, 10); // dec == 0, ok == false //! [73] } void Widget::toLongLongFunction() { //! [74] QString str = "FF"; bool ok; qint64 hex = str.toLongLong(&ok, 16); // hex == 255, ok == true qint64 dec = str.toLongLong(&ok, 10); // dec == 0, ok == false //! [74] } void Widget::toLowerFunction() { //! [75] QString str = "Qt by NOKIA"; str = str.toLower(); // str == "qt by nokia" //! [75] } void Widget::toShortFunction() { //! [76] QString str = "FF"; bool ok; short hex = str.toShort(&ok, 16); // hex == 255, ok == true short dec = str.toShort(&ok, 10); // dec == 0, ok == false //! [76] } void Widget::toUIntFunction() { //! [77] QString str = "FF"; bool ok; uint hex = str.toUInt(&ok, 16); // hex == 255, ok == true uint dec = str.toUInt(&ok, 10); // dec == 0, ok == false //! [77] } void Widget::toULongFunction() { //! [78] QString str = "FF"; bool ok; ulong hex = str.toULong(&ok, 16); // hex == 255, ok == true ulong dec = str.toULong(&ok, 10); // dec == 0, ok == false //! [78] } void Widget::toULongLongFunction() { //! [79] QString str = "FF"; bool ok; quint64 hex = str.toULongLong(&ok, 16); // hex == 255, ok == true quint64 dec = str.toULongLong(&ok, 10); // dec == 0, ok == false //! [79] } void Widget::toUShortFunction() { //! [80] QString str = "FF"; bool ok; ushort hex = str.toUShort(&ok, 16); // hex == 255, ok == true ushort dec = str.toUShort(&ok, 10); // dec == 0, ok == false //! [80] } void Widget::toUpperFunction() { //! [81] QString str = "TeXt"; str = str.toUpper(); // str == "TEXT" //! [81] } void Widget::trimmedFunction() { //! [82] QString str = " lots\t of\nwhitespace\r\n "; str = str.trimmed(); // str == "lots\t of\nwhitespace" //! [82] } void Widget::truncateFunction() { //! [83] QString str = "Vladivostok"; str.truncate(4); // str == "Vlad" //! [83] } void Widget::plusEqualOperator() { //! [84] QString x = "free"; QString y = "dom"; x += y; // x == "freedom" //! [84] } void Widget::arrayOperator() { //! [85] QString str; if (str[0] == QChar('?')) str[0] = QChar('_'); //! [85] } void Widget::midRefFunction() { //! [midRef] QString x = "Nine pineapples"; QStringRef y = x.midRef(5, 4); // y == "pine" QStringRef z = x.midRef(5); // z == "pineapples" //! [midRef] } void Widget::leftRefFunction() { //! [leftRef] QString x = "Pineapple"; QStringRef y = x.leftRef(4); // y == "Pine" //! [leftRef] } void Widget::rightRefFunction() { //! [rightRef] QString x = "Pineapple"; QStringRef y = x.rightRef(5); // y == "apple" //! [rightRef] } int main(int argc, char *argv[]) { QApplication app(argc, argv); Widget widget; widget.show(); return app.exec(); }