Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:qt4 [2013/03/04 21:34] alfred [QDialog] |
fw:qt4 [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 117: | Línea 117: | ||
| Es la base clase para crear ventanas de diálogo. Estas son utilizadas para que el usuario realice pequeñas tareas. Pueden ser modales o no, devolver un valor y tener botones por defecto. | Es la base clase para crear ventanas de diálogo. Estas son utilizadas para que el usuario realice pequeñas tareas. Pueden ser modales o no, devolver un valor y tener botones por defecto. | ||
| * El método ''exec()'' muestra el diálogo y hasta que no se cierre no continua con la ejecución. El ''show()'' sí continua. | * El método ''exec()'' muestra el diálogo y hasta que no se cierre no continua con la ejecución. El ''show()'' sí continua. | ||
| + | * El método\signal ''accept()'' cerrará el formulario indicando que el usuario acepta. | ||
| ==== Menús principales y acciones ==== | ==== Menús principales y acciones ==== | ||
| Para crear un menú dentro de una QMainWindow lo que haremos será llamar a ''menuBar()->addMenu()'' que devolverá un objeto ''QMenu'' al cual podremos añadir objetos ''QAction'' (acciones dentro del programa que se pueden enlazar a menús, atajos de teclado...). | Para crear un menú dentro de una QMainWindow lo que haremos será llamar a ''menuBar()->addMenu()'' que devolverá un objeto ''QMenu'' al cual podremos añadir objetos ''QAction'' (acciones dentro del programa que se pueden enlazar a menús, atajos de teclado...). | ||
| Línea 160: | Línea 161: | ||
| === QGLShaderProgram y QGLShader === | === QGLShaderProgram y QGLShader === | ||
| - | ''QGLShader'' es la clase que recoge código GLSL para ser compilado y ''QGLShaderProgram'' se encarga de realizar dicha compilación de los diferentes shaders pasados. \\ | + | ''QGLShader'' es la clase que recoge código GLSL para ser compilado y ''QGLShaderProgram'' se encarga de realizar dicha compilación de los diferentes shaders pasados (se han de crear durante la inicialización de OpenGL). \\ |
| Debemos indicar en el constructor ''QGLShader'' qué tipo de shader es (QGLShader::Vertex o QGLShader::Fragment). \\ | Debemos indicar en el constructor ''QGLShader'' qué tipo de shader es (QGLShader::Vertex o QGLShader::Fragment). \\ | ||
| Para posteriormente pasar valores a los atributos de input a los shaders debemos usar el método ''bindAttributeLocation'' pasándole el nombre de este y su posición (antes de linkar el programa). Si no se enlazasen las posiciones entonces serían cogidas automáticamente. | Para posteriormente pasar valores a los atributos de input a los shaders debemos usar el método ''bindAttributeLocation'' pasándole el nombre de este y su posición (antes de linkar el programa). Si no se enlazasen las posiciones entonces serían cogidas automáticamente. | ||
| Línea 171: | Línea 172: | ||
| // Se lee el contenido de dos ficheros de código glsl y se vuelcan sobre shader_source | // Se lee el contenido de dos ficheros de código glsl y se vuelcan sobre shader_source | ||
| - | vshader->compileSourceCode(shader_source[0].source); | + | vshader->compileSourceFile(vShaderFile); // De archivo |
| - | fshader->compileSourceCode(shader_source[1].source); | + | |
| + | const char *fsrc = | ||
| + | "uniform sampler2D texture;\n" | ||
| + | "varying mediump vec4 texc;\n" | ||
| + | "void main(void)\n" | ||
| + | "{\n" | ||
| + | " gl_FragColor = texture2D(texture, texc.st);\n" | ||
| + | "}\n"; | ||
| + | fshader->compileSourceCode(fsrc); | ||
| QGLShaderProgram *program = new QGLShaderProgram(this); | QGLShaderProgram *program = new QGLShaderProgram(this); | ||
| program->addShader(vshader); | program->addShader(vshader); | ||
| Línea 211: | Línea 221: | ||
| * **qtconfig**: Configura el aspecto y el comportamiento de las interficies creadas con Qt en esa máquina. | * **qtconfig**: Configura el aspecto y el comportamiento de las interficies creadas con Qt en esa máquina. | ||
| ==== QtCreator ==== | ==== QtCreator ==== | ||
| + | ==== Diseñador ==== | ||
| + | * Si queremos acceder a los elementos agregados por el diseñador desde el código lo haremos a partir del objeto ''ui'' que hay en la clase: | ||
| + | <code cpp> | ||
| + | // en clase MainWindow, npd es un QDialog: | ||
| + | connect(this->ui->actionNew_Planet, SIGNAL(triggered()), npd, SLOT(show())); | ||
| + | </code> | ||
| ==== Cómo... ==== | ==== Cómo... ==== | ||
| === ... Configurar un proyecto C++ simple, sin utilizar Qt? === | === ... Configurar un proyecto C++ simple, sin utilizar Qt? === | ||