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

Aktuelle Zeit: Do Mär 28, 2024 09:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Qt und OpenGL
BeitragVerfasst: Di Jul 14, 2015 14:20 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Hallo,
ich arbeite mich gerade in Qt (5.5.0) ein und verzweifel gerade bei der Implementierung von OpenGL.

Ich habe mich nach der Dokumentation der QOpenGLWidget Klasse gerichtet: Qt 5.5.0

Leider bekomme ich das nicht hin. Die Tutorials die ich im Netz gefunden habe, sind leider nicht aktuell und die Beispiele von Qt habe ich mir bereits auch angesehen, im Grund genommen verstehe ich sie auch, aber irgendwie stehe ich auf dem Schlauch.

Die ClearColor wird richtig angeizeigt, wenn ich jedoch eine Szene darstellen möchte, passiert nichts.

Hier mein Code:
main.cpp
Code:
  1. #include "opengl_test.h"
  2. #include <QtWidgets/QApplication>
  3.  
  4. int main(int argc, char *argv[]) {
  5.     QApplication a(argc, argv);
  6.  
  7.     QSurfaceFormat format;
  8.     format.setDepthBufferSize(24);
  9.     format.setStencilBufferSize(8);
  10.     format.setVersion(3, 2);
  11.     format.setProfile(QSurfaceFormat::CoreProfile);
  12.     QSurfaceFormat::setDefaultFormat(format);
  13.  
  14.     OpenGL_Test w;
  15.     w.show();
  16.     return a.exec();
  17. }


opengl_test.h
Code:
  1. #ifndef OPENGL_TEST_H
  2. #define OPENGL_TEST_H
  3.  
  4. #include <QtWidgets/QMainWindow>
  5. #include "ui_opengl_test.h"
  6.  
  7. class OpenGL_Test : public QMainWindow
  8. {
  9.     Q_OBJECT
  10.  
  11. public:
  12.     OpenGL_Test(QWidget *parent = 0);
  13.     ~OpenGL_Test();
  14.  
  15. private:
  16.     Ui::OpenGL_TestClass ui;
  17. };
  18.  
  19. #endif // OPENGL_TEST_H


opengl_test.cpp
Code:
  1. #include "opengl_test.h"
  2. #include "myglwidget.h"
  3.  
  4. OpenGL_Test::OpenGL_Test(QWidget *parent)
  5.     : QMainWindow(parent)
  6. {
  7.     ui.setupUi(this);
  8. }
  9.  
  10. OpenGL_Test::~OpenGL_Test()
  11. {
  12.  
  13. }



myglwidget.h
Code:
  1. #ifndef MYGLWIDGET_H
  2. #define MYGLWIDGET_H
  3.  
  4. #include <QOpenGLWidget>
  5. #include <QOpenGLFunctions>
  6. #include <QOpenGLVertexArrayObject>
  7. #include <QOpenGLBuffer>
  8. #include <QMatrix4x4>
  9. #include <QOpenGLShaderProgram>
  10. #include <QVector3D>
  11.  
  12. class MyGLWidget : public QOpenGLWidget
  13. {
  14.     Q_OBJECT
  15.  
  16. public:
  17.     MyGLWidget(QWidget *parent);
  18.     ~MyGLWidget();
  19.  
  20. private:
  21.    
  22.  
  23. protected:
  24.     void initializeGL() override;
  25.     void resizeGL(int w, int h) override;
  26.     void paintGL() override;
  27. };
  28.  
  29. #endif // MYGLWIDGET_H



myglwidget.cpp
Code:
  1. #include "myglwidget.h"
  2.  
  3. static const char *vertexShaderSourceCore =
  4. "#version 150\n"
  5. "in vec3 vertex;\n"
  6. "uniform mat4 proj;\n"
  7. "uniform mat4 view;\n"
  8. "uniform mat4 model;\n"
  9. "void main() {\n"
  10. "   gl_Position = proj * view * model * vec4(vertex,1.0f);\n"
  11. "}\n";
  12.  
  13.  
  14. MyGLWidget::MyGLWidget(QWidget *parent)
  15.     : QOpenGLWidget(parent)
  16. {
  17.    
  18. }
  19.  
  20. MyGLWidget::~MyGLWidget()
  21. {
  22.  
  23. }
  24.  
  25. void MyGLWidget::initializeGL() {
  26.     glClearColor(0.25, 0.25, 0.25,1.0f);
  27.  
  28. }
  29.  
  30. void MyGLWidget::resizeGL(int w, int h) {
  31.  
  32. }
  33.  
  34. void MyGLWidget::paintGL() {
  35.     const float PI = 3.14;
  36.     QVector<QVector3D> data;
  37.     QVector3D tmp;
  38.     for (int i = 0; i < 360; i++) {
  39.         tmp.setX(cos(static_cast<float>(i) / 360 * 2 * PI));
  40.         tmp.setY(sin(static_cast<float>(i) / 360 * 2 * PI));
  41.         tmp.setZ(0);
  42.         data.push_back(tmp);
  43.     }
  44.  
  45.     QMatrix4x4 model, proj, view;
  46.  
  47.     model.setToIdentity();
  48.  
  49.     proj.setToIdentity();
  50.     proj.ortho(-2.0f, 2.0f, -2.0f, 2.0f, -10.0f, 10.0f);
  51.  
  52.     QVector3D eye(0, 0, 2);
  53.     QVector3D center(0, 0, 0);
  54.     QVector3D up(0, 1, 0);
  55.     view.lookAt(eye, center, up);
  56.  
  57.     QOpenGLShaderProgram SP;
  58.  
  59.     SP.create();
  60.     SP.addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShaderSourceCore);
  61.     SP.link();
  62.     SP.bind();
  63.  
  64.     int posVertex = SP.attributeLocation("vertex");
  65.     int posModel = SP.uniformLocation("model");
  66.     int posView= SP.uniformLocation("view");
  67.     int posProj= SP.uniformLocation("proj");
  68.  
  69.     QOpenGLVertexArrayObject VAO;
  70.     VAO.create();
  71.     VAO.bind();
  72.  
  73.     QOpenGLBuffer VBO;
  74.     VBO.create();
  75.     VBO.bind();
  76.  
  77.     VBO.allocate(data.constData(), data.size() * sizeof(QVector3D));
  78.    
  79.     VBO.bind();
  80.  
  81.     SP.setAttributeBuffer(posVertex, GL_FLOAT, 0, 3, sizeof(QVector3D));
  82.  
  83.     SP.setUniformValue(posModel, model);
  84.     SP.setUniformValue(posView, view);
  85.     SP.setUniformValue(posProj, proj);
  86.  
  87.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  88.     glDrawArrays(GL_POINTS, 0, 360);
  89.  
  90. }


Die Datein sind im Anhang beigefügt.

Vielen Dank im Voraus!


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Zuletzt geändert von beecksche am Mi Jul 15, 2015 09:16, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Jul 14, 2015 16:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
In deinem Code kann ich nirgends ein glutSwapBuffers(); oder etwas ähnliches finden.

Edit:Ich habe dein Programm genauer angeguckt, du hast nur eine Inizialisierung für den Vertex-Shader, wo hast du dies für den Fragment-Shader.
Auch sollte es ein InitScene und ein RenderScene geben.

Wen ich dich wäre, würde ich ein anderes Tutorial verwenden. :wink:

Sind das deine ersten Versuche mit neuen OpenGL oder hast du es schon mal in einer anderen Umgebung gemacht ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Jul 14, 2015 19:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Eins vorweg: Ich habe bisher noch nicht mit Qt5 gearbeitet und auch noch nicht mit den 3D-/OpenGL-Klassen von Qt (QOpenGLBuffer, QVector3D, QOpenGLShaderProgram usw). Ein SwapBuffers brauchst du aber afaik nicht, das erledigt das OpenGL-Widget schon für dich, nachdem paintGL() aufgerufen wurde.

mathias hat Recht, es fehlt ein Fragmentshader, denn der legt fest, welche Farbe deine Pixel am Ende haben. Außerdem fehlt eine Fehlerbehandlung, falls etwas beim Kompilieren oder Linken der Shader schief gehen sollte. Bei deinem Programm z.B. muss es eigentlich einen Linkerfehler geben, weil du keinen Fragmentshader hast. Auch der Vertexshader ist nicht ganz korrekt. In GLSL gibt es kein 1.0f, man schreibt dort lediglich 1.0.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Jul 14, 2015 20:09 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Danke schonmal für die tips. Die Programmierung des Codes ist nicht schön, ich wollte lediglich schnelle eine Szene darstellen um zu schauen wie das funktioniert.

Ich habe bislang mit Windows forms und Open gl gearbeitet, dort haben alle Funktionen genau das getan was ich wollte (Geometrie buffer, usw.) daher habe ich eigentlich gedacht die Materie wäre mir vertraut.

Das mit dem Fragment schader werde ich morgen mal versuchen. Ich war der Meinung dass ein Fragment schader nicht zwingend notwendig sei.

Danke für Infos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Jul 14, 2015 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
beecksche hat geschrieben:
Ich war der Meinung dass ein Fragment schader nicht zwingend notwendig sei.

Wenn du überhaupt Shader benutzt (ab OpenGL3+ ist das Pflicht), benötigst du mindestens Vertex- und Fragmentshader. Alle anderen Shaderarten sind optional.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Mi Jul 15, 2015 09:04 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Okay super peinlich .... :D

Ich habe meinen Fehler gefunden:
Nachdem ich dem SP sage wie der VertexBuffer "aussieht", sollte man es ja noch aktivieren: so funktionierts ...

Code:
  1. ....
  2.     VBO.allocate(data.constData(), data.size() * sizeof(QVector3D));
  3.    
  4.     VBO.bind();
  5.  
  6.     SP.setAttributeBuffer(posVertex, GL_FLOAT, 0, 3, sizeof(QVector3D));
  7.     SP.enableAttributeArray(posVertex); //<---
  8. ....


Unwichtige Information am Rande: Den Fragment-Shader habe ich eingebaut, aber es hat auch ohne funktioniert. Die Punkte werden dann einfach schwarz angezeigt.

Danke für eure Zeit und Sorry :roll:

EDIT:
Was mir jedoch nun aufällt ist in der main.cpp das Surfaceformat:

Code:
  1. #include "opengl_test.h"
  2. #include <QtWidgets/QApplication>
  3.  
  4. int main(int argc, char *argv[]) {
  5.     QApplication a(argc, argv);
  6.  
  7.     QSurfaceFormat format;
  8.     format.setDepthBufferSize(24);
  9.     format.setStencilBufferSize(8);
  10.     //format.setVersion(3, 2); //<-- muss auskommentiert sein, sonst werden die Punkte schwarz angezeigt
  11.     format.setProfile(QSurfaceFormat::CoreProfile);
  12.     QSurfaceFormat::setDefaultFormat(format);
  13.  
  14.     OpenGL_Test w;
  15.     w.show();
  16.     return a.exec();
  17. }


Wenn ich eine Version festlege, scheint der Fragmentshader nicht mehr das zu tun was er eigentlich soll ...
Ich lasse die Funktion erstmal auskommentiert und schaue wie sich das entwickelt :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Mi Jul 15, 2015 15:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Die Punkte werden dann einfach schwarz angezeigt.


Ich denke mal, das deine Shader fehlerhaft sind.
Übergibst du irgendwo einen Color-Wert an den Shader, z.B. mit Unifom ?
So wie ich sehe übergibst du nur Matrizen und die Vertex-Werte.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Mi Jul 15, 2015 20:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
https://www.opengl.org/wiki/Fragment_Shader#Optional hat geschrieben:
Fragment shaders are technically an optional shader stage. If no fragment shader is used, then the color values of the output Fragment have undefined values.
Wusste ich auch noch nicht. Ich dachte immer, es gibt einen Linkerfehler, wenn man den Fragmentshader weglässt. Vielleicht hat man das mit Transform Feedback eingeführt. Wie dem auch sei, wenn du willst, dass deine Punkte irgendeine bestimmte Farbe haben, brauchst du einen Fragmentshader. Auf das Schwarz kannst du dich nicht verlassen.

Zeig mal deinen Fragmentshader, der nicht mit OpenGL 3.2 funktionieren will.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Do Jul 16, 2015 16:41 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Hier die Shader

Vertex:
Code:
  1. static const char *vertexShaderSourceCore =
  2. "#version 150\n"
  3. "in vec3 vertex;\n"
  4. "uniform mat4 proj;\n"
  5. "uniform mat4 view;\n"
  6. "uniform mat4 model;\n"
  7. "uniform vec3 color;\n"
  8. "out vec3 colorOut;\n"
  9. "void main() {\n"
  10. "   gl_Position = proj * view * model * vec4(vertex, 1.0);\n"
  11. "   colorOut = color;\n"
  12. "}\n";


Fragment:
Code:
  1. static const char *fragmentShaderSourceCore =
  2. "#version 150\n"
  3. "in vec3 colorOut;\n"
  4. "void main() {\n"
  5. "   gl_FragColor = vec4(colorOut, 1.0);\n"
  6. "}\n";


Übergabe der Farbe:

Code:
  1. QVector3D color(1, 1, 0);
  2. SP->setUniformValue(posColor, color);


Wie gesagt, wenn ich in der main.cpp die Version auf 3.2 setze, wird die Farbe nicht angezeigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Do Jul 16, 2015 17:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
gl_FragColor ist deprecated. Die Variable für die Farbausgabe sollte man explizit deklarieren. So z.B.:
Code:
  1. #version 150
  2. in vec3 colorOut;
  3. out vec4 fragColor;
  4. void main() {
  5.    fragColor = vec4(colorOut, 1.0);
  6. }

Du solltest dir unbedingt das Log vom Shader ausgeben lassen. Wenn etwas schiefläuft, steht da immer eine Fehlermeldung drin und auch sonst enthält es manchmal nützliche Warnungen.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Do Jul 16, 2015 18:46 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Okay, das habe ich nicht gewusst! Werde ich in Zukunft berücksichtigen!

Dankesehr

Edit:

Ich habe den Fragment-Shader wie du gesagt hast geändert und voilà! Funktioniert. Ich kann nun in der main.cpp die Version festlegen und der Fragment-Shader macht was er soll :D

Dankeschööööön


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Sep 15, 2015 13:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ein Nachtrag von mir, weil ich mich damit vor kurzem auseinandergesetzt habe: QSurfaceFormat::setDefaultFormat sollte man vor dem erzeugen der QApplication aufrufen, wenn möglich. Das stellt sicher, dass auch später sharing richtig funktioniert und ich meine irgendwo den Hinweis gelesen zu haben, dass das auf irgendeiner Plattform sogar erforderlich ist (zu letzterem finde ich gerade keine Quelle).

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Fr Okt 23, 2015 19:00 
Offline
DGL Member

Registriert: Di Dez 16, 2014 10:18
Beiträge: 32
Programmiersprache: C++
Dank für den Tipp. Hier ist die Quelle:

http://doc.qt.io/qt-5/qopenglwidget.html#details hat geschrieben:
Note: Calling QSurfaceFormat::setDefaultFormat() before constructing the QApplication instance is mandatory on some platforms (for example, OS X) when an OpenGL core profile context is requested. This is to ensure that resource sharing between contexts stays functional as all internal contexts are created using the correct version and profile.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Di Nov 10, 2015 16:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Mhh, du solltest vieleicht dir es einfacher machen und QML verwenden, das hat von hause aus schon den OpenGL Context aktive und eine SceneGraph API um Shader und so zu laden.
QML gibt auch Kontrolle über Swap und Clear, was bei normalen QT Widget nicht der Fall ist.
QT Widget wrapped die ganze OpenGL API über eigenen Code und entsprechend ist es inkompatibel zu bibliotheken wie GLEW.
QML mit SceneGraph

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Qt und OpenGL
BeitragVerfasst: Mi Nov 11, 2015 10:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich kann dazu ein bisschen mehr sagen, ich hab mein Projekt mit QML angefangen und bin dann auf Qt Widgets umgesteiegen.

Der Grund war, dass QML aus C++ heraus sehr anstrengend zu verwenden ist (das war mein Hauptkritikpunkt in meinem Blogpost, in dem ich erläutere, warum ich Qt Widgets über QML gewählt habe). Man merkt deutlich, dass es darauf ausgelegt ist, nur aus der QML-Sprache heraus verwendet zu werden. Zusätzlich fehlen viele Controls einfach und man muss irgendwas improvisieren. Die Styling-Möglichkeiten sind zwar abstrakter und damit im Prinzip flexibler. Im Klartext heißt das, man bekommt die Grundformen (Rechteck, Ellipse…) zur Verfügung und muss damit im Prinzip alles sichtbare machen. Ein bisschen was geht über CSS, aber sowas wie Border Radius (oder war es unterschiedliche Borderstyles an unterschiedlichen Kanten?) ist schon zu viel verlangt. Wenn man also nicht darauf abzielt, ein vollständig neues UI-Design zu machen (also nicht nur Optisch, sondern auch vom Workflow her), sondern wenn es reicht, mit QStyle rumzuspielen (was ja in der ersten Iteration heißen kann, ich nutze den Qt-Standardstyle mit eigenen Farben und in der zweiten Iteration, dass man alle von Qt unterstützten Widgets vollständig selber themed und Qt nur die Interaktion handeln lässt), dann würde ich auf QML verzichten. Das einzige verbleibende Kriterium sind UI-Animationen, darin ist QML wohl recht stark. Aber das finde ich nicht so wichtig.

QML hat mit seinem Scenegraphen auch ein paar Einschränkungen, z.B. passiert das Rendern in einem anderen Thread als die UI-Interaktion. Das muss man im Kopf behalten, da kommt man auch nicht drum herum, egal ob man die QML Funktionen zum Rendern verwendet oder nicht. Wenn man den Scenegraphen nicht verwenden will, dann ist das Rendern praktisch Identisch zum Workflow mit QT Widgets, mit dem Unterschied, dass es nicht in einem eigenen Thread passiert. Der Unterschied ist lediglich, welche Klasse man Instanziiert, wieviele Schmerzen man hat, um eigene Klassen auf das Interface zu bekommen (QML: viele, Qt: wenige bis keine) und an welche Signale man sein Rendern bindet.

Wenn man ein QOpenGLWidget verwendet, dann bekommt man seinen eigenen Framebuffer und kann damit machen was man will. Ich habe den erfolgreich mit GLEW genutzt, bin dann aber auf epoxy umgestiegen, welches mir von den Mesa-Leuten empfohlen wurde und sich gerade bei neuen Funktionen auch besser schlägt (man muss bei GLEW explizit experimental anschalten, um Core zu verwenden).

Die Qt-OpenGL-Abstraktionen wollen sie dir mit QML genauso (eher noch stärker) aufzwingen wie mit Qt Widgets; da muss man bei QML einfach hart sein und die Compilerwarnungen, die von den Qt Leuten erzeugt werden, ignorieren, bei Qt Widgets konnte ich diese vermeiden.

Zu guter Letzt das Tooling: Das ist noch sehr kommerziell. Will heißen, man kann zwar mit Qt Creator GUIs bauen, aber sobald man bestimmte features verwendet, weigert der sich, das noch im Designer zu bearbeiten. Diese sind dann nur mit einer Bezahllizenz verfügbar. Ich weiß nicht mehr wo genau da die Grenze war, ich glaube das fing bei dem Verwenden von Funktionen bei Propertywerten an. Aber nagelt mich nicht drauf fest. Es wurde jedenfalls relativ schnell relativ anstregend.

Ich hoffe, das hilft bei der Entscheidung. Bei konkreten Fragen zu dem einen oder dem anderen stehe ich gerne zur Verfügung, ich hatte nie die Motivation, meine Teilweise doch etwas aufwendigen Recherchen in einem Post zusammenzufassen.

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 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.063s | 17 Queries | GZIP : On ]