Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Ayuda con la clase QCompleter en c++.
Forum Updated to NodeBB v4.3 + New Features

Ayuda con la clase QCompleter en c++.

Scheduled Pinned Locked Moved Solved Spanish
6 Posts 4 Posters 579 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.
  • B Offline
    B Offline
    BELY
    wrote on 5 May 2025, 23:10 last edited by BELY 5 Jun 2025, 00:03
    #1

    Hola comunidad QT.
    Espero se encuentren bien.

    Si alguien pudiera ayudarme les agradeceré mucho.
    Tengo un lineEdit donde se van a ingresar nombres de proveedores el cual despliega una lista de sugerencias basada en el texto que se va ingresando, e logrado hacer que se despliegue la lista al ingresar la primer letra del nombre del proveedor pero quiero que también tome en cuenta otras palabras de la cadena de texto, por ejemplo si vamos a ingresar:
    "Centro internacional LOCUS para el desarrollo de software y servicios de asesoría personalizada."
    también se despliegue al escribir "LOCUS".

    NOTA
    Las cabeceras las incluí en el .h
    Windows 10
    Qt Creator 16.0.0
    Based on Qt 6.8.2 (MSVC 2022, x86_64)

    Dejo un enlace por si gustan ver el proyecto..

    Descargar aqui...

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        /// CONECTARSE A LA BASE DE DATOS ///
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("mybasededatos.db");
        db.open();
    
        /// ACIENDO UNA CONSULTA A LA BASE DE DATOS ///
        QSqlQuery q("SELECT * FROM proveedores");
    
        /// AGREGAR LA CONSULTA A UN lineEdit ///
        QSqlRecord rec = q.record();
        int regColumn = rec.indexOf("nombre"); /// encabezado de la columna "nombre"
        while (q.next())
         regConComa << q.value(regColumn).toString() << ",";
    
        QStringList palabras = {regConComa};
        QStringListModel *modelo = new QStringListModel(palabras);
    
        QCompleter *completer = new QCompleter(modelo);
        completer->setCaseSensitivity(Qt::CaseInsensitive); /// Ignorar mayúsculas/minúsculas
    
        ui->lineEdit_proveedores->setCompleter(completer);
    
        ///-----------------------------------------------
    
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    E 1 Reply Last reply 7 Jun 2025, 23:23
    0
    • B Offline
      B Offline
      BELY
      wrote 11 days ago last edited by
      #5
      This post is deleted!
      1 Reply Last reply
      0
      • C Offline
        C Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on 6 May 2025, 04:14 last edited by
        #2

        Please write in english or use the appropriate subforum: https://forum.qt.io/category/31/spanish

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        S 1 Reply Last reply 6 May 2025, 07:27
        0
        • S SGaist moved this topic from General and Desktop on 6 May 2025, 07:27
        • C Christian Ehrlicher
          6 May 2025, 04:14

          Please write in english or use the appropriate subforum: https://forum.qt.io/category/31/spanish

          S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 6 May 2025, 07:27 last edited by
          #3

          @Christian-Ehrlicher moved

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • B BELY
            5 May 2025, 23:10

            Hola comunidad QT.
            Espero se encuentren bien.

            Si alguien pudiera ayudarme les agradeceré mucho.
            Tengo un lineEdit donde se van a ingresar nombres de proveedores el cual despliega una lista de sugerencias basada en el texto que se va ingresando, e logrado hacer que se despliegue la lista al ingresar la primer letra del nombre del proveedor pero quiero que también tome en cuenta otras palabras de la cadena de texto, por ejemplo si vamos a ingresar:
            "Centro internacional LOCUS para el desarrollo de software y servicios de asesoría personalizada."
            también se despliegue al escribir "LOCUS".

            NOTA
            Las cabeceras las incluí en el .h
            Windows 10
            Qt Creator 16.0.0
            Based on Qt 6.8.2 (MSVC 2022, x86_64)

            Dejo un enlace por si gustan ver el proyecto..

            Descargar aqui...

            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
            
                /// CONECTARSE A LA BASE DE DATOS ///
                QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
                db.setDatabaseName("mybasededatos.db");
                db.open();
            
                /// ACIENDO UNA CONSULTA A LA BASE DE DATOS ///
                QSqlQuery q("SELECT * FROM proveedores");
            
                /// AGREGAR LA CONSULTA A UN lineEdit ///
                QSqlRecord rec = q.record();
                int regColumn = rec.indexOf("nombre"); /// encabezado de la columna "nombre"
                while (q.next())
                 regConComa << q.value(regColumn).toString() << ",";
            
                QStringList palabras = {regConComa};
                QStringListModel *modelo = new QStringListModel(palabras);
            
                QCompleter *completer = new QCompleter(modelo);
                completer->setCaseSensitivity(Qt::CaseInsensitive); /// Ignorar mayúsculas/minúsculas
            
                ui->lineEdit_proveedores->setCompleter(completer);
            
                ///-----------------------------------------------
            
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            
            E Offline
            E Offline
            Eloihr
            wrote on 7 Jun 2025, 23:23 last edited by
            #4

            @BELY Si lees la documentación de QCompleter, lo único que necesitas es cambiar el modo de filtrar el contenido del QCompleter. Usa setFilterMode(Qt::MatchContains). Seguramente también necesitarás usar setCaseSensitivity(Qt::CaseInsensitive) si no quieres distinguir entre mayúsculas y minúsculas.

            https://doc.qt.io/qt-6/qcompleter.html#filterMode-prop
            https://doc.qt.io/qt-6/qcompleter.html#caseSensitivity-prop

            B 1 Reply Last reply 10 days ago
            0
            • B Offline
              B Offline
              BELY
              wrote 11 days ago last edited by
              #5
              This post is deleted!
              1 Reply Last reply
              0
              • E Eloihr
                7 Jun 2025, 23:23

                @BELY Si lees la documentación de QCompleter, lo único que necesitas es cambiar el modo de filtrar el contenido del QCompleter. Usa setFilterMode(Qt::MatchContains). Seguramente también necesitarás usar setCaseSensitivity(Qt::CaseInsensitive) si no quieres distinguir entre mayúsculas y minúsculas.

                https://doc.qt.io/qt-6/qcompleter.html#filterMode-prop
                https://doc.qt.io/qt-6/qcompleter.html#caseSensitivity-prop

                B Offline
                B Offline
                BELY
                wrote 10 days ago last edited by
                #6

                @Eloihr Si tienes razón, el echo de que (Qt::MatchContains) se use en otros escenarios como QtableWidget me confundió bastante.

                1 Reply Last reply
                0
                • B BELY has marked this topic as solved 10 days ago

                • Login

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