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 Unsolved Spanish
4 Posts 4 Posters 410 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 12 days ago
    #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 9 days ago
    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 9 days ago 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

          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