QT - Insertar en un tableWidget un QComboBox

   
Vista:

Insertar en un tableWidget un QComboBox

Publicado por william (27 intervenciones) el 17/03/2010 19:24:27
correo: elgatoa3@gmail.com|
_____________________________|

Cordial saludo

Necesito que en todas las casillas de una columna de un tableWidget tengan cargados QComboBox.

Gracias por la ayuda que me puedan prestar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar en un tableWidget un QComboBox

Publicado por william (27 intervenciones) el 18/03/2010 00:28:33
correo: elgatoa3@gmail.com|
_____________________________|

Ya lo resolví.
Es cuestión de buscar en la ayuda. ctrl+c ctrl+v.
:D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar en un tableWidget un QComboBox

Publicado por william (27 intervenciones) el 19/03/2010 16:39:48
correo: elgatoa3@gmail.com|
_____________________________|

Mañana publico la solución :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar en un tableWidget un QComboBox[soluci]

Publicado por william (27 intervenciones) el 19/03/2010 17:05:53
correo: elgatoa3@gmail.com |
______________________________|

Para insertar un ComboBox en un TableWidget se debe tener en cuenta si los quiere cargar dinamicamente o no.
Este ejemplo es para el primer caso. (Lo he sacado mirando la ayuda que viene con el Qt).

paso1: Abrir QtCreator
paso2: Archivo/nuevo File or Project/
paso3: En la ventana nuevo seleccionamos en la parte proyectos "Aplicacion Qt4 con Gui" y dar click en siguiente
paso5: Damos nombre al proyecto y seleccionamos la carpeta donde va quedar y dar click en siguiente
paso6: Seleccionamos los modulos requeridos, en mi caso ninguno y dar click en siguiente
paso7: Le damos nombre a la clase base en mi caso "MainWindow", clase base "QMainWindow" y seleccionamos la
opcion "Generar Formulario" y dar click en siguiente
paso8: dar click en Terminar

Ya creamos el proyecto :D

paso9: Buscamos en la parte izquierda donde estan los proyectos, el formulario creado en mi caso "mainwindow.ui"
y damos doble click para abrirlo y poderlo editar con el QTDesginer que trae el QTCreator.
paso10: presionamos Alt+0 (Alt+ #cero), para cerrar la barra lateral
paso11: En los Widget, buscamos "Table Widget" y lo arrastramos al formulario
paso12: Damos un click en el "Table Widget" que arrastramos y en la barra de propiedades le damos un nombre en la
propiedad "objectName", en mi caso lo llamé "tableWidget" (sin las comillas)

Está un poco largo ufff!!!

paso13: Arrastramos un "push Button" al formulario y lo ubicamos en la parte de arriba
paso14: Ir al menu "Editar/Editar signals-slots" (o presionamos la tecla "F4")
paso15: Damos click sostenido en el boton y deslizamos hasta soltarlo al formulario (NO SOLTARLO EN EL
TABLEWIDGET) hasta que veamos una linea roja que en un extremo esta unida al botón y el otro extremo
unido al formulario y aparece el simbolo de tierra.
paso16: En la ventana que aparece "configure connection" en la parte "pushButton" seleccionamos "clicked()" en la
parte izquierda correspondiente a "MainWindow" damos click en el boton "Edit".
paso17: En la ventana de "Signal/Slots of MainWindow" en la parte de Slot damos click en el boton ADD (+)
escribimos "cargarComboEnTabla()" (sin las comillas) NO necesitamos crear signals por tanto damos click en
aceptar.
paso18: En la ventana "configure connection" seleccionamos en la parte MainWindow "cargarComboEnTabla()" y
presionamos aceptar. Lo que hemos hecho es amarrar el evento click del boton al Slots
"cargarComboEnTabla()" que crearemos a continuación.
paso19: Presionamos Alt+0 para abrir la pestaña de proyectos
paso20: El la carpeta Headers del proyecto damos doble click en el archivo "mainwindow.h"
paso21: presionamos nuevamente Alt+0 para ocultar la barra de proyectos
paso22: en el archivo "mainwindow.h" buscamos la linea "Ui::MainWindow *ui;" (linea 20 +-) y despues de esta linea
escribimos este codigo:

public slots:
void cargarComboEnTabla();

paso23: Guardamos todo
paso24: abrimos el archivo MainWindow.cpp y despues de donde termina la funcion
"void MainWindow::changeEvent" escribimos nuestro slot:

void MainWindow::cargarComboEnTabla(){
ui->tableWidget->setRowCount(4);
ui->tableWidget->setColumnCount(4);
for (int i = 0 ; i < 4; i++ ){
for (int j = 0 ; j < 4; j++){
ui->tableWidget->setItem(i , j , new QTableWidgetItem );
}
}
for (int i = 0 ; i < 4; i++ ){
for (int j = 0 ; j < 4 ; j++){
ui->tableWidget->setCellWidget(i,j,new QComboBox);
}
}
}

paso25: En el archivo MainWindow.cpp NO olvidar declarar la libreria #include "QComboBox" ya que entonces no
nos aparecera los combos en la tabla

paso26: EJECUTAMOS EL PROGRAMA :D

Se debe tener en cuenta que en las celdas de la tabla se puede agregar LineEdit, botones, radio buton etc, cualquier tipo de Widget :D

POR FIN

***************************

CODIGO FUENTE DEL PROYECTO:

***************************
******ARCHIVO ens.pro******
***************************

#-------------------------------------------------
#
# Project created by QtCreator 2010-03-18T18:52:20
#
#-------------------------------------------------

TARGET = ens
TEMPLATE = app

SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h

FORMS += mainwindow.ui

****************************************
******* ARCHIVO mainwindow.h ***********
****************************************

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();

protected:
void changeEvent(QEvent *e);

private:
Ui::MainWindow *ui;
public slots:
void cargarComboEnTabla();
};

#endif // MAINWINDOW_H

*****************************************************
*******ARCHIVO ui_mainwindow.h***********************
*****************************************************

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();

protected:
void changeEvent(QEvent *e);

private:
Ui::MainWindow *ui;
public slots:
void cargarComboEnTabla();
};

#endif // MAINWINDOW_H

***********************************
*******ARCHIVO main.cpp************
***********************************

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

************************************
********ARCHIVO mainwindow.cpp******
************************************

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QComboBox"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}

void MainWindow::cargarComboEnTabla(){
ui->tableWidget->setRowCount(4);
ui->tableWidget->setColumnCount(4);
for (int i = 0 ; i < 4; i++ ){
for (int j = 0 ; j < 4; j++){
ui->tableWidget->setItem(i , j , new QTableWidgetItem );
}
}
for (int i = 0 ; i < 4; i++ ){
for (int j = 0 ; j < 4 ; j++){
ui->tableWidget->setCellWidget(i,j,new QComboBox);

}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar en un tableWidget un QComboBox[soluci]

Publicado por John Meneses (1 intervención) el 12/11/2013 20:35:33
Suponiendo que agregué QlineEdit en la Tabla, la duda es como obtengo los valores de los QlineEdit si no se los nombres de los que se crearon dinámica-mente. disculpen la ignorancia pero pueden haber varios con la misma duda. Gracias por la ayuda me han sacado de un gran apuro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar