Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Okt 31, 2024 23:50

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Di Jul 19, 2011 11:39 
Offline
DGL Member

Registriert: Mo Apr 27, 2009 11:19
Beiträge: 35
Hallo liebe Leute,

ich möchte ganz gern für mein fertiges C++/OpenGL-Programm eine GUI mit Hilfe von QT erstellen. Ich habe gelesen, dass man das sich mit dem QT Creator auch mehr oder weiniger zusammenklicken kann.(Was bombig wäre) Ich hab jetzt auch schon die neueste SDK auf meinem Rechner installiert und kleine Tutorials mit qml-Dateien gemacht. Jetzt hab ich auch versucht eine kleine cpp in QT zu öffnen und eine GUI hinzuzufügen. Allerdings geht das irgendwie nicht. Ich versteh nicht ganz wo ich da anfangen soll. Also kompiliert QT auch ganz normal C++/OpenGL-Code? Ich habe auch schon versucht in xcode in meiner cpp qt zu includen und dann einfach zu kompilieren. Das geht aber auch nicht. Kennt vielleicht irgendwer von euch ne seite, wo das nochmal genauer beschrieben wird.Also fertige cpp und dafür im qt-creator ne gui erstellen. Ich danke euch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Di Jul 19, 2011 13:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Kennt vielleicht irgendwer von euch ne seite, wo das nochmal genauer beschrieben wird.

Qt ist eigentlich sehr gut dokumentiert.
http://doc.qt.nokia.com/latest/index.html

Code:
  1. Jetzt hab ich auch versucht eine kleine cpp in QT zu öffnen und eine GUI hinzuzufügen.

Qt ist ein Framework, mehr nicht. Was du vermutlich meist ist der QtCreator, eine IDE die du mit dem SDK installieren kannst. Um Fenster und Dialoge zu designen brauchst du eigentlich nur den QtDesigner, welcher ein *.ui-File erzeugt. Wie du dieses dann in deine Anwendung bekommst, ist z.B. hier beschrieben:
http://doc.qt.nokia.com/latest/designer ... -file.html
Ich nutze normalerweise den "Multiple Inheritance Approach".

Was du wissen musst: Diese *.ui-Files beschreiben deine GUI in XML. Für diese muss C++-Code generiert werden, welchen du dann in dein Programm includen musst. Der einfachste Weg dazu ist die Benutzung von qmake zum compilieren, was zum Teil auch unter obigem Link beschrieben wird. Ich kann dir allerdings nicht sagen wie du qmake mit XCode zusammenbringst. Ich rufe bei mir einfach "qmake" und dann "make" in der Konsole auf, aber ich arbeite auch mit Kate unter Linux, nicht mit XCode unter MacOS. QtCreator benutzt natürlich intern qmake, d.h. damit geht das auch.

Kenntnisse in QML habe ich bisher nicht gebraucht.


Wichtig: Unter MacOS kannst du keine normalen GUI-Elemente als Child eines OpenGL-Widgets haben. Du kannst auch keine GUI-Element über einem OpenGL-Widget platzieren, der Fenstermanager macht das einfach nicht mit. Das funktioniert nur unter Windows und Linux. Man kann aber irgendwie seine GUI-Elemente mit OpenGL rendern lassen, habe ich aber noch nicht erfolgreich hin bekommen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Mi Jul 20, 2011 08:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
In Xcode 3 habe ich damals dashier benutzt:
https://gitorious.org/qtxcodeintegration

Damit ist es sehr simpel. Ob das allerdings auch mit Xcode 4 funktioniert weiss ich nicht, habe unter OSX lange nichts mit Qt gemacht..

Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Mi Jul 20, 2011 12:19 
Offline
DGL Member

Registriert: Mo Apr 27, 2009 11:19
Beiträge: 35
@ Aya: Danke dir. Muss ich mir mal anschauen.
@Coolcat: Danke dir auch. Ich habe leider immer noch nicht alles ganz verstanden. Meine Fragen:
Zitat:
Diese *.ui-Files beschreiben deine GUI in XML. Für diese muss C++-Code generiert werden, welchen du dann in dein Programm includen musst.


Also wenn ich zum Beispiel eine test.ui habe wird mir ja mit qmake im QTCreator eine ui_test.h generiert. Diese include ich dann in meiner cpp? Wenn ich das so richtig verstanden habe.

Also geht es gar nicht eine GUI für OpenGL-Code unter Mac zu generieren? Das hab ich nämlich aus deiner letzten Bemerkung so verstanden. Vielleicht kannst du das nochmal etwas erklären.

Zitat:
Wichtig: Unter MacOS kannst du keine normalen GUI-Elemente als Child eines OpenGL-Widgets haben. Du kannst auch keine GUI-Element über einem OpenGL-Widget platzieren, der Fenstermanager macht das einfach nicht mit. Das funktioniert nur unter Windows und Linux. Man kann aber irgendwie seine GUI-Elemente mit OpenGL rendern lassen, habe ich aber noch nicht erfolgreich hin bekommen.


Vielleicht gibt es auch irgendwie nochmal ein kleines Minibeispiel, wo man OpenGL/C++ und QT-Code hat. So dass man den Zusammenhang sieht. Das kann ich nämlich irgendwie nicht finden.

Also das ist mir alles noch ein Rätsel wie ich das verknüpfen kann. Ich muss dazu sagen, dass ich noch NIE etwas mit GUI-Programmierung gemacht habe. Also entschuldigt auch eventuell dumm wirkende Fragen.

Danke nochmal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Mi Jul 20, 2011 12:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Also wenn ich zum Beispiel eine test.ui habe wird mir ja mit qmake im QTCreator eine ui_test.h generiert. Diese include ich dann in meiner cpp? Wenn ich das so richtig verstanden habe.

Ja, hast du richtig verstanden.

Zitat:
Also geht es gar nicht eine GUI für OpenGL-Code unter Mac zu generieren?

Was ich sagen wollte:
Es ist problemlos möglich GUI-Elemente zusammen mit einem QGLWidget zu benutzen. Gut, der QtDesigner kann das nicht, aber du kannst dieses eine Element manuell in deinem Code hinzufügen. Was nicht möglich ist, ist z.B. einen Button an ein QGLWidget zu hängen. Also das QGLWidget darf keine Kinder haben. Es könnte ja sein das du etwa ein QGLWidget als Hintergrund für ein Menü benutzen willst. Das geht nicht, bzw. nicht einfach so.

Beispiel aus meiner Diplomarbeit:
Bild(zum vergrößern klicken)
Die 4 Ansichten sind QGLWidget's. Das Menü und die Toolbars oben links sind ganz normale Widget-Elemente. Was aber auf MacOS nicht möglich ist sind Buttons über einem QGLWidget, wie hier die Buttons innerhalb jeder der 4 Ansichten. Deshalb habe ich diese Buttons jeweils als Quad mit einer Textur gerendert und die Mausevents selbst implementiert. Damit der Text in den beschrifteten Buttons die Systemfont benutzt verwende ich ein Offscreen-Label mit QPixmap::grabWidget(&label), welches wiederum via QGLWidget::bindTexture(pixmap) zu einer Textur gemacht wird. Blöde Lösung aber da ich nur Buttons gebraucht habe relativ schnell gemacht. Der Nutzer merkt keinerlei Unterschied. Popup-Menüs und Tooltips kann Qt aber sehr wohl über ein QGLWidget rendern, man muss sie eben nur manuell auslösen.

Zitat:
Also das ist mir alles noch ein Rätsel wie ich das verknüpfen kann.

Wie du deine GUI mit deiner Anwendung verbindest weißt du? Wenn nicht schau dir Signals und Slots an.

Zitat:
Vielleicht gibt es auch irgendwie nochmal ein kleines Minibeispiel, wo man OpenGL/C++ und QT-Code hat. So dass man den Zusammenhang sieht.

http://doc.qt.nokia.com/4.7-snapshot/op ... llogl.html
Also im wesentlichen leitest du von QGLWidget ab und implementierst die folgenden virtuellen Methoden:
Code:
  1. void initializeGL(); // Initialisierung
  2. void paintGL(); // Bild muss neu gerendert werden
  3. void resizeGL(int width, int height); // Größe hat sich geändert, glViewport aufrufen, Projektion neu berechnen, etc.

Da drin kannst du ganz normal OpenGL-Befehle ausführen. Um den Aufruf von glFlush/glFinish/swapBuffers musst du dich nicht kümmern, das macht Qt für dich.

Mehr Beispiele: http://doc.qt.nokia.com/4.7-snapshot/ex ... pengl.html

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: QT und C++/OpenGL Anfängerfrage
BeitragVerfasst: Mi Aug 10, 2011 22:10 
Offline
DGL Member

Registriert: Mo Apr 27, 2009 11:19
Beiträge: 35
Vielen vielen Dank Coolcat! Nach einigem Rumwurschteln hab ich nun endlich meine ersten kleinen Beispiele ausprobiert und alles hat geklappt. Jetzt bin ich dabei mein etwas größeres Projekt anzupassen. Also vielen Dank nochmal für die Einführung. Hat mir echt geholfen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.013s | 17 Queries | GZIP : On ]