Qt en Español

Qt en Español es una comunidad de usuarios para aprender a Programar usando las librerias Qt

Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Últimos temas
» Desaparecen objetos del formulario al usar showMaximized()
Sáb Sep 13, 2014 9:54 pm por ljimenez29

» visivilidad de controles
Dom Mayo 18, 2014 5:04 pm por solitarywolf

» Error QT (y no sé que más poner ¬¬)
Jue Sep 26, 2013 4:02 pm por Anónimo

» QT, VTK en VS 2008 C++
Jue Abr 11, 2013 5:19 pm por monicadiaz

» [Ayuda]Programa en PyQt4 en modo Pantalla completa
Sáb Mar 30, 2013 8:56 pm por fortil

» SIGNAL y SLOT
Sáb Mar 02, 2013 5:11 pm por loloqt

» Qt creator 5.0.1 en Windows 8...."Qt creator needs a compiler set up to build. Configure a compiler in the kit options"
Miér Feb 27, 2013 4:23 pm por caliche

» mi aplicacion no me lee la base de datos
Jue Oct 18, 2012 1:55 pm por jldiaz

» QT.Para G19 de Logitech
Dom Oct 14, 2012 3:00 am por novax1

Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
Compañeros
Crear foro
Sondeo

Que nombre te gustaria que se llamara el foro?

27% 27% [ 6 ]
18% 18% [ 4 ]
0% 0% [ 0 ]
55% 55% [ 12 ]

Votos Totales : 22


No estás conectado. Conéctate o registrate

[HOWTO] Insertar un comboBox en un QTableWidget

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

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 Very Happy

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:

Código:
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:

Código:
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 Very Happy

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

POR FIN

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

CODIGO FUENTE DEL PROYECTO:

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

Código:
#-------------------------------------------------
#
# 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 ***********
****************************************

Código:
#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***********************
*****************************************************

Código:
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created: Fri 16. Apr 04:45:50 2010
**      by: Qt User Interface Compiler version 4.6.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QTableWidget>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
    QWidget *centralWidget;
    QTableWidget *tableWidget;
    QPushButton *pushButton;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(600, 400);
        centralWidget = new QWidget(MainWindow);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        tableWidget = new QTableWidget(centralWidget);
        tableWidget->setObjectName(QString::fromUtf8("tableWidget"));
        tableWidget->setGeometry(QRect(60, 50, 256, 192));
        pushButton = new QPushButton(centralWidget);
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        pushButton->setGeometry(QRect(334, 50, 121, 23));
        MainWindow->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(MainWindow);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 600, 21));
        MainWindow->setMenuBar(menuBar);
        mainToolBar = new QToolBar(MainWindow);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(MainWindow);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        MainWindow->setStatusBar(statusBar);

        retranslateUi(MainWindow);
        QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(cargarComboEnTabla()));

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
        pushButton->setText(QApplication::translate("MainWindow", "cargar combo en tabla", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H
 

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

Código:
#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******
************************************

Código:
#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);
        }
    }
}



Última edición por elgatoa3 el Vie Abr 16, 2010 5:47 am, editado 1 vez

Ver perfil de usuario
te recomiendo que a la proxima vez que cuando pongas el codigo fuente lo pongas entre:

Código:
[code][/code]

para que asi sea mas legible.

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

le puedes poner el nombre que sea, no importa como se llame.

el mainwindow.h y el ui_mainwindow.h es el mismo codigo, no creo que sea necesario que pongas el ui_mainwindow.h

Thanks por el tutorial xD

Ver perfil de usuario http://qt-espanol.forosactivos.net

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.