[Qt-jambi-interest] QCompleter and models.
José Arcángel Salazar Delgado
arcangel.salazar at gmail.com
Wed May 20 20:29:25 CEST 2009
Hi
I'm trying to use the QCompleter with a custom model. But apparetly, the
QCompleter doesn't like my custom model, and doesn't workat all.
This is the code of the custom model:
package com.nettrace.models;
import java.util.Vector;
import com.trolltech.qt.core.QModelIndex;
import com.trolltech.qt.core.Qt.ItemDataRole;
import com.trolltech.qt.gui.QAbstractTableModel;
import com.trolltech.qt.sql.QSqlTableModel;
public class ClientesVectorModel extends QAbstractTableModel {
public Vector<Cliente> clientes;
public ClientesVectorModel() {
}
public ClientesVectorModel(Vector<Cliente> clientes) {
beginInsertRows(null, 0, clientes.size()-1);
this.clientes = clientes;
endInsertRows();
}
@Override
public int columnCount(QModelIndex arg0) {
return 10;
}
@Override
public Object data(QModelIndex index, int role) {
String data= new String("");
if(role == ItemDataRole.DisplayRole){
if(index.column()==0){
data =
String.valueOf(clientes.elementAt(index.row()).getId());
}
else if (index.column() == 1){
data =
clientes.elementAt(index.row()).getRazonSocial();
}
else if (index.column() == 2){
data =
clientes.elementAt(index.row()).getCiudad();
}
else if (index.column() == 3){
data =
clientes.elementAt(index.row()).getColonia();
}
else if (index.column() == 4){
data =
clientes.elementAt(index.row()).getCp();
}
else if (index.column() == 5){
data =
clientes.elementAt(index.row()).getDireccion();
}
else if (index.column() == 6){
data =
clientes.elementAt(index.row()).getEstado();
}
else if (index.column() == 7){
data =
clientes.elementAt(index.row()).getRazonSocial();
}
else if (index.column() == 8){
data =
clientes.elementAt(index.row()).getRfc();
}
else if (index.column() == 9){
data =
clientes.elementAt(index.row()).getTelefono();
}
return data;
}
return null;
}
@Override
public int rowCount(QModelIndex parent) {
return clientes.size();
}
}
And this is the code that is calling the QCompleter:
//this return a vector with "Clientes". Works Well.
clientesVectorModel = new ClientesVectorModel(Cliente.getAll());
nombreClientesCompleter.setModel(clientesVectorModel);
nombreClientesCompleter.setCompletionRole(ItemDataRole.DisplayRole);
nombreClientesCompleter.setCaseSensitivity(CaseSensitivity.CaseInsensitive);
ui.razonSocialLineEdit.setCompleter(nombreClientesCompleter);
nombreClientesCompleter.activatedIndex.connect(this,"completarCliente(QModelIndex)");
More information about the Qt-jambi-interest
mailing list