Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to make the QCompleter read from a QString?
Qt 6.11 is out! See what's new in the release blog

How to make the QCompleter read from a QString?

Scheduled Pinned Locked Moved Solved General and Desktop
11 Posts 2 Posters 2.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BlasterB Blaster

    Hi guys, I'm working on an app a little different from many of the ones that are spoken in this forum, I want to complete words from a string in a data structure .

    VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by
    #2

    error C2065: 'data structure' : undeclared identifier

    please define what you mean. maybe provide an example?

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    BlasterB 1 Reply Last reply
    0
    • VRoninV VRonin

      error C2065: 'data structure' : undeclared identifier

      please define what you mean. maybe provide an example?

      BlasterB Offline
      BlasterB Offline
      Blaster
      wrote on last edited by
      #3

      @VRonin
      what I mean is that the QCompleter read a QString and not a QTextEdit or QLineEdit

      1 Reply Last reply
      0
      • VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #4

        Can you provide an example of what you want to achieve?
        something like: "I type a string in a QLineEdit and I want QCompleter to complete using a list of strings I have in a database"

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        BlasterB 1 Reply Last reply
        1
        • VRoninV VRonin

          Can you provide an example of what you want to achieve?
          something like: "I type a string in a QLineEdit and I want QCompleter to complete using a list of strings I have in a database"

          BlasterB Offline
          BlasterB Offline
          Blaster
          wrote on last edited by
          #5

          @VRonin
          That is not what I want to do. I'm writing a QTextEdit, but in a QString am keeping what am writing, without showing what is in the QTextEdit, then, I want to complete what is in the QString with a database in a file

          1 Reply Last reply
          0
          • VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #6

            with a database in a file

            If you mean a SQLite DB then just use a QSqlTableModel as QSqlQueryModel with setModel()

            want to complete what is in the QString

            call setCompletionPrefix() with the string you want to complete and just iterate through the completions

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            BlasterB 1 Reply Last reply
            1
            • VRoninV VRonin

              with a database in a file

              If you mean a SQLite DB then just use a QSqlTableModel as QSqlQueryModel with setModel()

              want to complete what is in the QString

              call setCompletionPrefix() with the string you want to complete and just iterate through the completions

              BlasterB Offline
              BlasterB Offline
              Blaster
              wrote on last edited by
              #7

              @VRonin

              It is not a database, it is a file with a long list of words

              If you mean a SQLite DB then just use a QSqlTableModel as QSqlQueryModel with setModel()

              Thanks

              1 Reply Last reply
              0
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #8

                Then read all the words in a QStringList and use a QStringListModel with setModel()

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                BlasterB 1 Reply Last reply
                1
                • VRoninV VRonin

                  Then read all the words in a QStringList and use a QStringListModel with setModel()

                  BlasterB Offline
                  BlasterB Offline
                  Blaster
                  wrote on last edited by
                  #9

                  @VRonin

                  Then read all the words in a QStringList and use a QStringListModel with setModel()

                  I know how to do that part. Thanks again.

                  By using the setCompletionPrefix() funtion the QCompleter does not work. Can you show me how you do it

                  1 Reply Last reply
                  0
                  • VRoninV Offline
                    VRoninV Offline
                    VRonin
                    wrote on last edited by VRonin
                    #10
                    #include <QFile>
                    #include <QApplication>
                    #include <QDebug>
                    #include <QCompleter>
                    #include <QTextStream>
                    #include <QStringList>
                    #include <QStringListModel>
                    
                    void createBaseFile();
                    
                    int main(int argc, char *argv[])
                    {
                        QApplication app(argc,argv);
                        createBaseFile();
                        QFile baseFile("baseFile.txt");
                        QStringList baseList;
                        if(baseFile.open(QIODevice::ReadOnly | QIODevice::Text)){
                            QTextStream baseFileStream(&baseFile);
                            QString line;
                            while (baseFileStream.readLineInto(&line)) {
                                baseList << line;
                            }
                        }
                        QStringListModel baseListModel(baseList);
                        QCompleter baseCompleter;
                        baseCompleter.setModel(&baseListModel);
                        baseCompleter.setCompletionPrefix("in"); // word to complete
                        for (int i = 0; baseCompleter.setCurrentRow(i); i++)
                            qDebug() << baseCompleter.currentCompletion() << " is match number " << i;
                        return 0;
                    }
                    void createBaseFile(){ //generate a random words "database"
                        QFile baseFile("baseFile.txt");
                        if(baseFile.open(QIODevice::WriteOnly | QIODevice::Text)){
                            QTextStream baseFileStream(&baseFile);
                            baseFileStream
                                    << "Lorem" << '\n'
                                    << "ipsum" << '\n'
                                    << "dolor" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "consectetur" << '\n'
                                    << "adipiscing" << '\n'
                                    << "elit" << '\n'
                                    << "Ut" << '\n'
                                    << "accumsan" << '\n'
                                    << "suscipit" << '\n'
                                    << "ipsum" << '\n'
                                    << "blandit" << '\n'
                                    << "consectetur" << '\n'
                                    << "lectus" << '\n'
                                    << "cursus" << '\n'
                                    << "vitae" << '\n'
                                    << "Donec" << '\n'
                                    << "velit" << '\n'
                                    << "odio" << '\n'
                                    << "iaculis" << '\n'
                                    << "a" << '\n'
                                    << "dictum" << '\n'
                                    << "id" << '\n'
                                    << "tincidunt" << '\n'
                                    << "et" << '\n'
                                    << "sem" << '\n'
                                    << "Morbi" << '\n'
                                    << "metus" << '\n'
                                    << "metus" << '\n'
                                    << "fringilla" << '\n'
                                    << "in" << '\n'
                                    << "ante" << '\n'
                                    << "in" << '\n'
                                    << "aliquet" << '\n'
                                    << "condimentum" << '\n'
                                    << "erat" << '\n'
                                    << "Cras" << '\n'
                                    << "lectus" << '\n'
                                    << "libero" << '\n'
                                    << "consectetur" << '\n'
                                    << "et" << '\n'
                                    << "metus" << '\n'
                                    << "vitae" << '\n'
                                    << "maximus" << '\n'
                                    << "efficitur" << '\n'
                                    << "enim" << '\n'
                                    << "Vivamus" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "pellentesque" << '\n'
                                    << "nibh" << '\n'
                                    << "Curabitur" << '\n'
                                    << "dapibus" << '\n'
                                    << "diam" << '\n'
                                    << "laoreet" << '\n'
                                    << "consequat" << '\n'
                                    << "purus" << '\n'
                                    << "at" << '\n'
                                    << "finibus" << '\n'
                                    << "enim" << '\n'
                                    << "Orci" << '\n'
                                    << "varius" << '\n'
                                    << "natoque" << '\n'
                                    << "penatibus" << '\n'
                                    << "et" << '\n'
                                    << "magnis" << '\n'
                                    << "dis" << '\n'
                                    << "parturient" << '\n'
                                    << "montes" << '\n'
                                    << "nascetur" << '\n'
                                    << "ridiculus" << '\n'
                                    << "mus" << '\n'
                                    << "Quisque" << '\n'
                                    << "suscipit" << '\n'
                                    << "massa" << '\n'
                                    << "at" << '\n'
                                    << "lobortis" << '\n'
                                    << "iaculis" << '\n'
                                    << "dui" << '\n'
                                    << "mi" << '\n'
                                    << "dictum" << '\n'
                                    << "lacus" << '\n'
                                    << "eget" << '\n'
                                    << "dictum" << '\n'
                                    << "metus" << '\n'
                                    << "nulla" << '\n'
                                    << "id" << '\n'
                                    << "nibh" << '\n'
                                    << "Nullam" << '\n'
                                    << "dapibus" << '\n'
                                    << "lectus" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "augue" << '\n'
                                    << "tempus" << '\n'
                                    << "ultricies" << '\n'
                                    << "Maecenas" << '\n'
                                    << "eleifend" << '\n'
                                    << "dolor" << '\n'
                                    << "eget" << '\n'
                                    << "porttitor" << '\n'
                                    << "vehicula" << '\n'
                                    << "Vivamus" << '\n'
                                    << "iaculis" << '\n'
                                    << "sodales" << '\n'
                                    << "rutrum" << '\n'
                                    << "Nulla" << '\n'
                                    << "ultricies" << '\n'
                                    << "ligula" << '\n'
                                    << "tellus" << '\n'
                                    << "id" << '\n'
                                    << "tempus" << '\n'
                                    << "odio" << '\n'
                                    << "congue" << '\n'
                                    << "ac" << '\n'
                                    << "Maecenas" << '\n'
                                    << "porttitor" << '\n'
                                    << "finibus" << '\n'
                                    << "libero" << '\n'
                                    << "quis" << '\n'
                                    << "facilisis" << '\n'
                                    << "enim" << '\n'
                                    << "scelerisque" << '\n'
                                    << "at" << '\n'
                                    << "Proin" << '\n'
                                    << "et" << '\n'
                                    << "nibh" << '\n'
                                    << "dui" << '\n'
                                    << "Vestibulum" << '\n'
                                    << "non" << '\n'
                                    << "consequat" << '\n'
                                    << "odio" << '\n'
                                    << "non" << '\n'
                                    << "sodales" << '\n'
                                    << "nibh" << '\n'
                                    << "Phasellus" << '\n'
                                    << "lobortis" << '\n'
                                    << "ante" << '\n'
                                    << "at" << '\n'
                                    << "dignissim" << '\n'
                                    << "interdum" << '\n'
                                    << "Vestibulum" << '\n'
                                    << "magna" << '\n'
                                    << "mauris" << '\n'
                                    << "aliquam" << '\n'
                                    << "nec" << '\n'
                                    << "erat" << '\n'
                                    << "eget" << '\n'
                                    << "lacinia" << '\n'
                                    << "pretium" << '\n'
                                    << "lacus" << '\n'
                                    << "Donec" << '\n'
                                    << "sollicitudin" << '\n'
                                    << "maximus" << '\n'
                                    << "ex" << '\n'
                                    << "nec" << '\n'
                                    << "finibus" << '\n'
                                    << "turpis" << '\n'
                                    << "dictum" << '\n'
                                    << "et" << '\n'
                                    << "Cras" << '\n'
                                    << "bibendum" << '\n'
                                    << "tellus" << '\n'
                                    << "ac" << '\n'
                                    << "suscipit" << '\n'
                                    << "egestas" << '\n'
                                    << "eros" << '\n'
                                    << "metus" << '\n'
                                    << "mattis" << '\n'
                                    << "augue" << '\n'
                                    << "vitae" << '\n'
                                    << "sagittis" << '\n'
                                    << "elit" << '\n'
                                    << "augue" << '\n'
                                    << "a" << '\n'
                                    << "mi" << '\n'
                                    << "Nullam" << '\n'
                                    << "venenatis" << '\n'
                                    << "commodo" << '\n'
                                    << "aliquam" << '\n'
                                    << "Duis" << '\n'
                                    << "sed" << '\n'
                                    << "mi" << '\n'
                                    << "dignissim" << '\n'
                                    << "maximus" << '\n'
                                    << "ipsum" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "venenatis" << '\n'
                                    << "diam" << '\n'
                                    << "Praesent" << '\n'
                                    << "ullamcorper" << '\n'
                                    << "luctus" << '\n'
                                    << "maximus" << '\n'
                                    << "Nulla" << '\n'
                                    << "ac" << '\n'
                                    << "consectetur" << '\n'
                                    << "sem" << '\n'
                                    << "Sed" << '\n'
                                    << "eu" << '\n'
                                    << "dui" << '\n'
                                    << "in" << '\n'
                                    << "eros" << '\n'
                                    << "mattis" << '\n'
                                    << "aliquam" << '\n'
                                    << "Suspendisse" << '\n'
                                    << "potenti" << '\n'
                                    << "Aliquam" << '\n'
                                    << "sollicitudin" << '\n'
                                    << "ipsum" << '\n'
                                    << "at" << '\n'
                                    << "dictum" << '\n'
                                    << "iaculis" << '\n'
                                    << "Integer" << '\n'
                                    << "tempus" << '\n'
                                    << "egestas" << '\n'
                                    << "vulputate" << '\n'
                                    << "Nam" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "dictum" << '\n'
                                    << "ante" << '\n'
                                    << "Mauris" << '\n'
                                    << "quam" << '\n'
                                    << "quam" << '\n'
                                    << "vestibulum" << '\n'
                                    << "a" << '\n'
                                    << "lorem" << '\n'
                                    << "ut" << '\n'
                                    << "dignissim" << '\n'
                                    << "pretium" << '\n'
                                    << "est" << '\n'
                                    << "Pellentesque" << '\n'
                                    << "ut" << '\n'
                                    << "enim" << '\n'
                                    << "condimentum" << '\n'
                                    << "tristique" << '\n'
                                    << "nunc" << '\n'
                                    << "ut" << '\n'
                                    << "aliquet" << '\n'
                                    << "turpis" << '\n'
                                    << "Interdum" << '\n'
                                    << "et" << '\n'
                                    << "malesuada" << '\n'
                                    << "fames" << '\n'
                                    << "ac" << '\n'
                                    << "ante" << '\n'
                                    << "ipsum" << '\n'
                                    << "primis" << '\n'
                                    << "in" << '\n'
                                    << "faucibus" << '\n'
                                    << "Sed" << '\n'
                                    << "venenatis" << '\n'
                                    << "nibh" << '\n'
                                    << "neque" << '\n'
                                    << "nec" << '\n'
                                    << "fringilla" << '\n'
                                    << "lectus" << '\n'
                                    << "molestie" << '\n'
                                    << "at" << '\n'
                                    << "Nullam" << '\n'
                                    << "in" << '\n'
                                    << "metus" << '\n'
                                    << "ac" << '\n'
                                    << "mi" << '\n'
                                    << "volutpat" << '\n'
                                    << "facilisis" << '\n'
                                    << "eget" << '\n'
                                    << "vel" << '\n'
                                    << "felis" << '\n'
                                    << "Aenean" << '\n'
                                    << "eu" << '\n'
                                    << "lorem" << '\n'
                                    << "feugiat" << '\n'
                                    << "aliquet" << '\n'
                                    << "eros" << '\n'
                                    << "vitae" << '\n'
                                    << "sollicitudin" << '\n'
                                    << "nulla" << '\n'
                                    << "Donec" << '\n'
                                    << "dolor" << '\n'
                                    << "nibh" << '\n'
                                    << "bibendum" << '\n'
                                    << "in" << '\n'
                                    << "pretium" << '\n'
                                    << "et" << '\n'
                                    << "lobortis" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "erat" << '\n'
                                    << "Integer" << '\n'
                                    << "accumsan" << '\n'
                                    << "ut" << '\n'
                                    << "nisi" << '\n'
                                    << "eu" << '\n'
                                    << "sagittis" << '\n'
                                    << "Mauris" << '\n'
                                    << "vitae" << '\n'
                                    << "interdum" << '\n'
                                    << "ligula" << '\n'
                                    << "Nullam" << '\n'
                                    << "quis" << '\n'
                                    << "ultrices" << '\n'
                                    << "arcu" << '\n'
                                    << "a" << '\n'
                                    << "rhoncus" << '\n'
                                    << "orci" << '\n'
                                    << "In" << '\n'
                                    << "velit" << '\n'
                                    << "nisl" << '\n'
                                    << "scelerisque" << '\n'
                                    << "nec" << '\n'
                                    << "ultricies" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "pulvinar" << '\n'
                                    << "ut" << '\n'
                                    << "lorem" << '\n'
                                    << "Suspendisse" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "varius" << '\n'
                                    << "libero" << '\n'
                                    << "vitae" << '\n'
                                    << "rutrum" << '\n'
                                    << "erat" << '\n'
                                    << "Integer" << '\n'
                                    << "lacus" << '\n'
                                    << "lorem" << '\n'
                                    << "vestibulum" << '\n'
                                    << "quis" << '\n'
                                    << "erat" << '\n'
                                    << "quis" << '\n'
                                    << "fermentum" << '\n'
                                    << "pellentesque" << '\n'
                                    << "enim" << '\n'
                                    << "Nam" << '\n'
                                    << "dolor" << '\n'
                                    << "turpis" << '\n'
                                    << "fringilla" << '\n'
                                    << "ac" << '\n'
                                    << "lectus" << '\n'
                                    << "in" << '\n'
                                    << "mollis" << '\n'
                                    << "tempor" << '\n'
                                    << "ipsum" << '\n'
                                    << "Integer" << '\n'
                                    << "in" << '\n'
                                    << "justo" << '\n'
                                    << "sit" << '\n'
                                    << "amet" << '\n'
                                    << "sapien" << '\n'
                                    << "bibendum" << '\n'
                                    << "convallis" << '\n'
                                    << "Suspendisse" << '\n'
                                    << "interdum" << '\n'
                                    << "ante" << '\n'
                                    << "eget" << '\n'
                                    << "aliquet" << '\n'
                                    << "congue" << '\n'
                                    << "elit" << '\n'
                                    << "nunc" << '\n'
                                    << "tincidunt" << '\n'
                                    << "tortor" << '\n'
                                    << "at" << '\n'
                                    << "consectetur" << '\n'
                                    << "sem" << '\n'
                                    << "magna" << '\n'
                                    << "vel" << '\n'
                                    << "ante" << '\n'
                                    << "Vivamus" << '\n'
                                    << "in" << '\n'
                                    << "diam" << '\n'
                                    << "lacus" << '\n'
                                    << "Pellentesque" << '\n'
                                    << "volutpat" << '\n'
                                    << "lacinia" << '\n'
                                    << "eros" << '\n'
                                    << "et" << '\n'
                                    << "convallis" << '\n'
                                    << "Suspendisse" << '\n'
                                    << "eget" << '\n'
                                    << "accumsan" << '\n'
                                    << "nisl" << '\n'
                                    << "Fusce" << '\n'
                                    << "viverra" << '\n'
                                    << "nisi" << '\n'
                                    << "elit" << '\n'
                                    << "sed" << '\n'
                                    << "venenatis" << '\n'
                                    << "elit" << '\n'
                                    << "vulputate" << '\n'
                                    << "nec" << '\n'
                                    << "Aenean" << '\n'
                                    << "tincidunt" << '\n'
                                    << "est" << '\n'
                                    << "a" << '\n'
                                    << "quam" << '\n'
                                    << "vestibulum" << '\n'
                                    << "ut" << '\n'
                                    << "maximus" << '\n'
                                    << "massa" << '\n'
                                    << "tristique" << '\n'
                                    << "Vestibulum" << '\n'
                                    << "ligula" << '\n'
                                    << "velit" << '\n'
                                    << "lobortis" << '\n'
                                    << "sed" << '\n'
                                    << "elit" << '\n'
                                    << "in" << '\n'
                                    << "facilisis" << '\n'
                                    << "blandit" << '\n'
                                    << "justo" << '\n'
                                    << "Nunc" << '\n'
                                    << "eget" << '\n'
                                    << "magna" << '\n'
                                    << "mattis" << '\n'
                                    << "consectetur" << '\n'
                                    << "sem" << '\n'
                                    << "id" << '\n'
                                    << "ultrices" << '\n'
                                    << "mauris" << '\n'
                                    << "Nulla" << '\n'
                                    << "porta" << '\n'
                                    << "consectetur" << '\n'
                                    << "mauris" << '\n'
                                    << "Aliquam" << '\n'
                                    << "non" << '\n'
                                    << "commodo" << '\n'
                                    << "metus" << '\n'
                                    << "in" << '\n'
                                    << "lacinia" << '\n'
                                    << "urna" << '\n'
                                    << "Proin" << '\n'
                                    << "sapien" << '\n'
                                    << "lorem" << '\n'
                                    << "auctor" << '\n'
                                    << "vitae" << '\n'
                                    << "maximus" << '\n'
                                    << "non" << '\n'
                                    << "elementum" << '\n'
                                    << "vitae" << '\n'
                                    << "quam" << '\n'
                                    << "Pellentesque" << '\n'
                                    << "eget" << '\n'
                                    << "felis" << '\n'
                                    << "vehicula" << '\n'
                                    << "imperdiet" << '\n'
                                    << "dolor" << '\n'
                                    << "quis" << '\n'
                                    << "sodales" << '\n'
                                    << "mi" << '\n'
                                    << "Etiam" << '\n'
                                    << "sodales" << '\n'
                                    << "placerat" << '\n'
                                    << "metus" << '\n'
                                    << "ac" << '\n'
                                    << "elementum" << '\n'
                                    << "risus" << '\n'
                                    << "finibus" << '\n'
                                    << "egestas" << '\n'
                                    << "In" << '\n'
                                    << "vitae" << '\n'
                                    << "lectus" << '\n'
                                    << "ligula" << '\n'
                                    << "Quisque" << '\n'
                                    << "fringilla" << '\n'
                                    << "porta" << '\n'
                                    << "efficitur" << '\n'
                                    << "Nullam" << '\n'
                                    << "a" << '\n'
                                    << "malesuada" << '\n'
                                    << "diam" << '\n'
                                    << "Praesent" << '\n'
                                    << "viverra" << '\n'
                                    << "porta" << '\n'
                                    << "augue" << '\n'
                                    << "sagittis" << '\n'
                                    << "convallis" << '\n'
                                    << "Praesent" << '\n'
                                    << "laoreet" << '\n'
                                    << "mauris" << '\n'
                                    << "quis" << '\n'
                                    << "gravida" << '\n'
                                    << "fermentum" << '\n'
                                    << "nisl" << '\n'
                                    << "sem" << '\n'
                                    << "molestie" << '\n'
                                    << "lorem" << '\n'
                                    << "vel" << '\n'
                                    << "iaculis" << '\n'
                                    << "magna" << '\n'
                                    << "quam" << '\n'
                                    << "in" << '\n'
                                    << "nisl" << '\n'
                                    << "Ut" << '\n'
                                    << "pulvinar" << '\n'
                                    << "erat" << '\n'
                                    << "ut" << '\n'
                                    << "cursus" << '\n'
                                    << "sagittis" << '\n'
                                    << "Nunc" << '\n'
                                    << "at" << '\n'
                                    << "dui" << '\n'
                                    << "at" << '\n'
                                    << "metus" << '\n'
                                    << "rhoncus" << '\n'
                                    << "ullamcorper" << '\n'
                    
                    
                                ;
                        }
                    
                    }
                    
                    

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    BlasterB 1 Reply Last reply
                    1
                    • VRoninV VRonin
                      #include <QFile>
                      #include <QApplication>
                      #include <QDebug>
                      #include <QCompleter>
                      #include <QTextStream>
                      #include <QStringList>
                      #include <QStringListModel>
                      
                      void createBaseFile();
                      
                      int main(int argc, char *argv[])
                      {
                          QApplication app(argc,argv);
                          createBaseFile();
                          QFile baseFile("baseFile.txt");
                          QStringList baseList;
                          if(baseFile.open(QIODevice::ReadOnly | QIODevice::Text)){
                              QTextStream baseFileStream(&baseFile);
                              QString line;
                              while (baseFileStream.readLineInto(&line)) {
                                  baseList << line;
                              }
                          }
                          QStringListModel baseListModel(baseList);
                          QCompleter baseCompleter;
                          baseCompleter.setModel(&baseListModel);
                          baseCompleter.setCompletionPrefix("in"); // word to complete
                          for (int i = 0; baseCompleter.setCurrentRow(i); i++)
                              qDebug() << baseCompleter.currentCompletion() << " is match number " << i;
                          return 0;
                      }
                      void createBaseFile(){ //generate a random words "database"
                          QFile baseFile("baseFile.txt");
                          if(baseFile.open(QIODevice::WriteOnly | QIODevice::Text)){
                              QTextStream baseFileStream(&baseFile);
                              baseFileStream
                                      << "Lorem" << '\n'
                                      << "ipsum" << '\n'
                                      << "dolor" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "consectetur" << '\n'
                                      << "adipiscing" << '\n'
                                      << "elit" << '\n'
                                      << "Ut" << '\n'
                                      << "accumsan" << '\n'
                                      << "suscipit" << '\n'
                                      << "ipsum" << '\n'
                                      << "blandit" << '\n'
                                      << "consectetur" << '\n'
                                      << "lectus" << '\n'
                                      << "cursus" << '\n'
                                      << "vitae" << '\n'
                                      << "Donec" << '\n'
                                      << "velit" << '\n'
                                      << "odio" << '\n'
                                      << "iaculis" << '\n'
                                      << "a" << '\n'
                                      << "dictum" << '\n'
                                      << "id" << '\n'
                                      << "tincidunt" << '\n'
                                      << "et" << '\n'
                                      << "sem" << '\n'
                                      << "Morbi" << '\n'
                                      << "metus" << '\n'
                                      << "metus" << '\n'
                                      << "fringilla" << '\n'
                                      << "in" << '\n'
                                      << "ante" << '\n'
                                      << "in" << '\n'
                                      << "aliquet" << '\n'
                                      << "condimentum" << '\n'
                                      << "erat" << '\n'
                                      << "Cras" << '\n'
                                      << "lectus" << '\n'
                                      << "libero" << '\n'
                                      << "consectetur" << '\n'
                                      << "et" << '\n'
                                      << "metus" << '\n'
                                      << "vitae" << '\n'
                                      << "maximus" << '\n'
                                      << "efficitur" << '\n'
                                      << "enim" << '\n'
                                      << "Vivamus" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "pellentesque" << '\n'
                                      << "nibh" << '\n'
                                      << "Curabitur" << '\n'
                                      << "dapibus" << '\n'
                                      << "diam" << '\n'
                                      << "laoreet" << '\n'
                                      << "consequat" << '\n'
                                      << "purus" << '\n'
                                      << "at" << '\n'
                                      << "finibus" << '\n'
                                      << "enim" << '\n'
                                      << "Orci" << '\n'
                                      << "varius" << '\n'
                                      << "natoque" << '\n'
                                      << "penatibus" << '\n'
                                      << "et" << '\n'
                                      << "magnis" << '\n'
                                      << "dis" << '\n'
                                      << "parturient" << '\n'
                                      << "montes" << '\n'
                                      << "nascetur" << '\n'
                                      << "ridiculus" << '\n'
                                      << "mus" << '\n'
                                      << "Quisque" << '\n'
                                      << "suscipit" << '\n'
                                      << "massa" << '\n'
                                      << "at" << '\n'
                                      << "lobortis" << '\n'
                                      << "iaculis" << '\n'
                                      << "dui" << '\n'
                                      << "mi" << '\n'
                                      << "dictum" << '\n'
                                      << "lacus" << '\n'
                                      << "eget" << '\n'
                                      << "dictum" << '\n'
                                      << "metus" << '\n'
                                      << "nulla" << '\n'
                                      << "id" << '\n'
                                      << "nibh" << '\n'
                                      << "Nullam" << '\n'
                                      << "dapibus" << '\n'
                                      << "lectus" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "augue" << '\n'
                                      << "tempus" << '\n'
                                      << "ultricies" << '\n'
                                      << "Maecenas" << '\n'
                                      << "eleifend" << '\n'
                                      << "dolor" << '\n'
                                      << "eget" << '\n'
                                      << "porttitor" << '\n'
                                      << "vehicula" << '\n'
                                      << "Vivamus" << '\n'
                                      << "iaculis" << '\n'
                                      << "sodales" << '\n'
                                      << "rutrum" << '\n'
                                      << "Nulla" << '\n'
                                      << "ultricies" << '\n'
                                      << "ligula" << '\n'
                                      << "tellus" << '\n'
                                      << "id" << '\n'
                                      << "tempus" << '\n'
                                      << "odio" << '\n'
                                      << "congue" << '\n'
                                      << "ac" << '\n'
                                      << "Maecenas" << '\n'
                                      << "porttitor" << '\n'
                                      << "finibus" << '\n'
                                      << "libero" << '\n'
                                      << "quis" << '\n'
                                      << "facilisis" << '\n'
                                      << "enim" << '\n'
                                      << "scelerisque" << '\n'
                                      << "at" << '\n'
                                      << "Proin" << '\n'
                                      << "et" << '\n'
                                      << "nibh" << '\n'
                                      << "dui" << '\n'
                                      << "Vestibulum" << '\n'
                                      << "non" << '\n'
                                      << "consequat" << '\n'
                                      << "odio" << '\n'
                                      << "non" << '\n'
                                      << "sodales" << '\n'
                                      << "nibh" << '\n'
                                      << "Phasellus" << '\n'
                                      << "lobortis" << '\n'
                                      << "ante" << '\n'
                                      << "at" << '\n'
                                      << "dignissim" << '\n'
                                      << "interdum" << '\n'
                                      << "Vestibulum" << '\n'
                                      << "magna" << '\n'
                                      << "mauris" << '\n'
                                      << "aliquam" << '\n'
                                      << "nec" << '\n'
                                      << "erat" << '\n'
                                      << "eget" << '\n'
                                      << "lacinia" << '\n'
                                      << "pretium" << '\n'
                                      << "lacus" << '\n'
                                      << "Donec" << '\n'
                                      << "sollicitudin" << '\n'
                                      << "maximus" << '\n'
                                      << "ex" << '\n'
                                      << "nec" << '\n'
                                      << "finibus" << '\n'
                                      << "turpis" << '\n'
                                      << "dictum" << '\n'
                                      << "et" << '\n'
                                      << "Cras" << '\n'
                                      << "bibendum" << '\n'
                                      << "tellus" << '\n'
                                      << "ac" << '\n'
                                      << "suscipit" << '\n'
                                      << "egestas" << '\n'
                                      << "eros" << '\n'
                                      << "metus" << '\n'
                                      << "mattis" << '\n'
                                      << "augue" << '\n'
                                      << "vitae" << '\n'
                                      << "sagittis" << '\n'
                                      << "elit" << '\n'
                                      << "augue" << '\n'
                                      << "a" << '\n'
                                      << "mi" << '\n'
                                      << "Nullam" << '\n'
                                      << "venenatis" << '\n'
                                      << "commodo" << '\n'
                                      << "aliquam" << '\n'
                                      << "Duis" << '\n'
                                      << "sed" << '\n'
                                      << "mi" << '\n'
                                      << "dignissim" << '\n'
                                      << "maximus" << '\n'
                                      << "ipsum" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "venenatis" << '\n'
                                      << "diam" << '\n'
                                      << "Praesent" << '\n'
                                      << "ullamcorper" << '\n'
                                      << "luctus" << '\n'
                                      << "maximus" << '\n'
                                      << "Nulla" << '\n'
                                      << "ac" << '\n'
                                      << "consectetur" << '\n'
                                      << "sem" << '\n'
                                      << "Sed" << '\n'
                                      << "eu" << '\n'
                                      << "dui" << '\n'
                                      << "in" << '\n'
                                      << "eros" << '\n'
                                      << "mattis" << '\n'
                                      << "aliquam" << '\n'
                                      << "Suspendisse" << '\n'
                                      << "potenti" << '\n'
                                      << "Aliquam" << '\n'
                                      << "sollicitudin" << '\n'
                                      << "ipsum" << '\n'
                                      << "at" << '\n'
                                      << "dictum" << '\n'
                                      << "iaculis" << '\n'
                                      << "Integer" << '\n'
                                      << "tempus" << '\n'
                                      << "egestas" << '\n'
                                      << "vulputate" << '\n'
                                      << "Nam" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "dictum" << '\n'
                                      << "ante" << '\n'
                                      << "Mauris" << '\n'
                                      << "quam" << '\n'
                                      << "quam" << '\n'
                                      << "vestibulum" << '\n'
                                      << "a" << '\n'
                                      << "lorem" << '\n'
                                      << "ut" << '\n'
                                      << "dignissim" << '\n'
                                      << "pretium" << '\n'
                                      << "est" << '\n'
                                      << "Pellentesque" << '\n'
                                      << "ut" << '\n'
                                      << "enim" << '\n'
                                      << "condimentum" << '\n'
                                      << "tristique" << '\n'
                                      << "nunc" << '\n'
                                      << "ut" << '\n'
                                      << "aliquet" << '\n'
                                      << "turpis" << '\n'
                                      << "Interdum" << '\n'
                                      << "et" << '\n'
                                      << "malesuada" << '\n'
                                      << "fames" << '\n'
                                      << "ac" << '\n'
                                      << "ante" << '\n'
                                      << "ipsum" << '\n'
                                      << "primis" << '\n'
                                      << "in" << '\n'
                                      << "faucibus" << '\n'
                                      << "Sed" << '\n'
                                      << "venenatis" << '\n'
                                      << "nibh" << '\n'
                                      << "neque" << '\n'
                                      << "nec" << '\n'
                                      << "fringilla" << '\n'
                                      << "lectus" << '\n'
                                      << "molestie" << '\n'
                                      << "at" << '\n'
                                      << "Nullam" << '\n'
                                      << "in" << '\n'
                                      << "metus" << '\n'
                                      << "ac" << '\n'
                                      << "mi" << '\n'
                                      << "volutpat" << '\n'
                                      << "facilisis" << '\n'
                                      << "eget" << '\n'
                                      << "vel" << '\n'
                                      << "felis" << '\n'
                                      << "Aenean" << '\n'
                                      << "eu" << '\n'
                                      << "lorem" << '\n'
                                      << "feugiat" << '\n'
                                      << "aliquet" << '\n'
                                      << "eros" << '\n'
                                      << "vitae" << '\n'
                                      << "sollicitudin" << '\n'
                                      << "nulla" << '\n'
                                      << "Donec" << '\n'
                                      << "dolor" << '\n'
                                      << "nibh" << '\n'
                                      << "bibendum" << '\n'
                                      << "in" << '\n'
                                      << "pretium" << '\n'
                                      << "et" << '\n'
                                      << "lobortis" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "erat" << '\n'
                                      << "Integer" << '\n'
                                      << "accumsan" << '\n'
                                      << "ut" << '\n'
                                      << "nisi" << '\n'
                                      << "eu" << '\n'
                                      << "sagittis" << '\n'
                                      << "Mauris" << '\n'
                                      << "vitae" << '\n'
                                      << "interdum" << '\n'
                                      << "ligula" << '\n'
                                      << "Nullam" << '\n'
                                      << "quis" << '\n'
                                      << "ultrices" << '\n'
                                      << "arcu" << '\n'
                                      << "a" << '\n'
                                      << "rhoncus" << '\n'
                                      << "orci" << '\n'
                                      << "In" << '\n'
                                      << "velit" << '\n'
                                      << "nisl" << '\n'
                                      << "scelerisque" << '\n'
                                      << "nec" << '\n'
                                      << "ultricies" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "pulvinar" << '\n'
                                      << "ut" << '\n'
                                      << "lorem" << '\n'
                                      << "Suspendisse" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "varius" << '\n'
                                      << "libero" << '\n'
                                      << "vitae" << '\n'
                                      << "rutrum" << '\n'
                                      << "erat" << '\n'
                                      << "Integer" << '\n'
                                      << "lacus" << '\n'
                                      << "lorem" << '\n'
                                      << "vestibulum" << '\n'
                                      << "quis" << '\n'
                                      << "erat" << '\n'
                                      << "quis" << '\n'
                                      << "fermentum" << '\n'
                                      << "pellentesque" << '\n'
                                      << "enim" << '\n'
                                      << "Nam" << '\n'
                                      << "dolor" << '\n'
                                      << "turpis" << '\n'
                                      << "fringilla" << '\n'
                                      << "ac" << '\n'
                                      << "lectus" << '\n'
                                      << "in" << '\n'
                                      << "mollis" << '\n'
                                      << "tempor" << '\n'
                                      << "ipsum" << '\n'
                                      << "Integer" << '\n'
                                      << "in" << '\n'
                                      << "justo" << '\n'
                                      << "sit" << '\n'
                                      << "amet" << '\n'
                                      << "sapien" << '\n'
                                      << "bibendum" << '\n'
                                      << "convallis" << '\n'
                                      << "Suspendisse" << '\n'
                                      << "interdum" << '\n'
                                      << "ante" << '\n'
                                      << "eget" << '\n'
                                      << "aliquet" << '\n'
                                      << "congue" << '\n'
                                      << "elit" << '\n'
                                      << "nunc" << '\n'
                                      << "tincidunt" << '\n'
                                      << "tortor" << '\n'
                                      << "at" << '\n'
                                      << "consectetur" << '\n'
                                      << "sem" << '\n'
                                      << "magna" << '\n'
                                      << "vel" << '\n'
                                      << "ante" << '\n'
                                      << "Vivamus" << '\n'
                                      << "in" << '\n'
                                      << "diam" << '\n'
                                      << "lacus" << '\n'
                                      << "Pellentesque" << '\n'
                                      << "volutpat" << '\n'
                                      << "lacinia" << '\n'
                                      << "eros" << '\n'
                                      << "et" << '\n'
                                      << "convallis" << '\n'
                                      << "Suspendisse" << '\n'
                                      << "eget" << '\n'
                                      << "accumsan" << '\n'
                                      << "nisl" << '\n'
                                      << "Fusce" << '\n'
                                      << "viverra" << '\n'
                                      << "nisi" << '\n'
                                      << "elit" << '\n'
                                      << "sed" << '\n'
                                      << "venenatis" << '\n'
                                      << "elit" << '\n'
                                      << "vulputate" << '\n'
                                      << "nec" << '\n'
                                      << "Aenean" << '\n'
                                      << "tincidunt" << '\n'
                                      << "est" << '\n'
                                      << "a" << '\n'
                                      << "quam" << '\n'
                                      << "vestibulum" << '\n'
                                      << "ut" << '\n'
                                      << "maximus" << '\n'
                                      << "massa" << '\n'
                                      << "tristique" << '\n'
                                      << "Vestibulum" << '\n'
                                      << "ligula" << '\n'
                                      << "velit" << '\n'
                                      << "lobortis" << '\n'
                                      << "sed" << '\n'
                                      << "elit" << '\n'
                                      << "in" << '\n'
                                      << "facilisis" << '\n'
                                      << "blandit" << '\n'
                                      << "justo" << '\n'
                                      << "Nunc" << '\n'
                                      << "eget" << '\n'
                                      << "magna" << '\n'
                                      << "mattis" << '\n'
                                      << "consectetur" << '\n'
                                      << "sem" << '\n'
                                      << "id" << '\n'
                                      << "ultrices" << '\n'
                                      << "mauris" << '\n'
                                      << "Nulla" << '\n'
                                      << "porta" << '\n'
                                      << "consectetur" << '\n'
                                      << "mauris" << '\n'
                                      << "Aliquam" << '\n'
                                      << "non" << '\n'
                                      << "commodo" << '\n'
                                      << "metus" << '\n'
                                      << "in" << '\n'
                                      << "lacinia" << '\n'
                                      << "urna" << '\n'
                                      << "Proin" << '\n'
                                      << "sapien" << '\n'
                                      << "lorem" << '\n'
                                      << "auctor" << '\n'
                                      << "vitae" << '\n'
                                      << "maximus" << '\n'
                                      << "non" << '\n'
                                      << "elementum" << '\n'
                                      << "vitae" << '\n'
                                      << "quam" << '\n'
                                      << "Pellentesque" << '\n'
                                      << "eget" << '\n'
                                      << "felis" << '\n'
                                      << "vehicula" << '\n'
                                      << "imperdiet" << '\n'
                                      << "dolor" << '\n'
                                      << "quis" << '\n'
                                      << "sodales" << '\n'
                                      << "mi" << '\n'
                                      << "Etiam" << '\n'
                                      << "sodales" << '\n'
                                      << "placerat" << '\n'
                                      << "metus" << '\n'
                                      << "ac" << '\n'
                                      << "elementum" << '\n'
                                      << "risus" << '\n'
                                      << "finibus" << '\n'
                                      << "egestas" << '\n'
                                      << "In" << '\n'
                                      << "vitae" << '\n'
                                      << "lectus" << '\n'
                                      << "ligula" << '\n'
                                      << "Quisque" << '\n'
                                      << "fringilla" << '\n'
                                      << "porta" << '\n'
                                      << "efficitur" << '\n'
                                      << "Nullam" << '\n'
                                      << "a" << '\n'
                                      << "malesuada" << '\n'
                                      << "diam" << '\n'
                                      << "Praesent" << '\n'
                                      << "viverra" << '\n'
                                      << "porta" << '\n'
                                      << "augue" << '\n'
                                      << "sagittis" << '\n'
                                      << "convallis" << '\n'
                                      << "Praesent" << '\n'
                                      << "laoreet" << '\n'
                                      << "mauris" << '\n'
                                      << "quis" << '\n'
                                      << "gravida" << '\n'
                                      << "fermentum" << '\n'
                                      << "nisl" << '\n'
                                      << "sem" << '\n'
                                      << "molestie" << '\n'
                                      << "lorem" << '\n'
                                      << "vel" << '\n'
                                      << "iaculis" << '\n'
                                      << "magna" << '\n'
                                      << "quam" << '\n'
                                      << "in" << '\n'
                                      << "nisl" << '\n'
                                      << "Ut" << '\n'
                                      << "pulvinar" << '\n'
                                      << "erat" << '\n'
                                      << "ut" << '\n'
                                      << "cursus" << '\n'
                                      << "sagittis" << '\n'
                                      << "Nunc" << '\n'
                                      << "at" << '\n'
                                      << "dui" << '\n'
                                      << "at" << '\n'
                                      << "metus" << '\n'
                                      << "rhoncus" << '\n'
                                      << "ullamcorper" << '\n'
                      
                      
                                  ;
                          }
                      
                      }
                      
                      
                      BlasterB Offline
                      BlasterB Offline
                      Blaster
                      wrote on last edited by
                      #11

                      @VRonin
                      Let's see, I use what you tell me about setCompletionPrefix (), but on any side it raises the popup.
                      What I do is that I connect a signal that passes the prefix and a slot that look like this:

                      void MineTextEdit::completeWord(QString cad)
                      {
                          if(cad.size() > 3)
                              {
                                  this->setFocus();
                                  c->setCompletionPrefix(cad);
                                  QRect cr = cursorRect();
                                  cr.setWidth(c->popup()->sizeHintForColumn(0)
                                              + c->popup()->verticalScrollBar()->sizeHint().width());
                                  c->complete(cr);
                              }
                      }
                      
                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved