- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 18

Thema: qt5 creator + designer: super simple graphic examples

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast

    qt5 creator + designer: super simple graphic examples

    hallo,
    ich habe z.Zt nur sehr simple qt5 creator GUI Programme mit wenigen Buttons und beschrifteten Labels, z.B.
    https://github.com/dsyleixa/Raspberr...p_ads1115.jpeg

    Nun möchte ich einen Zeichnungs-Bereich (eine Leinwand) in die Form einfügen, in dem ich per Programmcode Linien- und Formgrafiken anzeigen kann.
    In der Vielzahl der widgets für den qt Designer finde ich aber nichts, was man da in der Form als Leinwand einfügen und zur passenden Größe"aufziehen" kann.
    Was nimmt man da?

    Als nächstes möchte ich (zum Üben) ein einfaches Quadrat (outline) und einen Kreis (fillshape) platzieren, in der Art
    SetBackgound(BLACK);
    SetColor(RED);
    RectOutline(20, 20, 40, 40);
    SetColor(YELLOW);
    Circle(30, 24, 10);
    wie mache ich das mit welchem qt-Code in dem soeben in die Form eingefügten Paint-Bereich?

  2. #2
    HaWe
    Gast
    PS
    nimmt man für Zeichnungen das OpenGL widget ?
    und dann wie weiter, um darin Linien und geometr. Formen anzuzeigen?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    https://doc.qt.io/archives/qt-5.5/qt...s-example.html
    https://doc.qt.io/qt-5/qml-qtquick-context2d.html
    Zuerst eine Leinwand (canvas) definieren, dann in deren onpaint()-Methode füllen.

  4. #4
    HaWe
    Gast
    dankeschön, leider sind mir die Einzelschritte nicht klar...:
    Eine Form mit Button und openGL "Leinwand" habe ich ja bereits entworfen https://github.com/dsyleixa/Raspberr.../qt_btn_OpenGL.

    Die Ceator IDE erzeugt dabei automatisch ein File mainwindow.cpp mit dem Inhalt
    Code:
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    und das canvas widget (QOpenGLWidget) wird in der Creator IDE per d+d in meiner Form durch "automatic code generation" in mainwindow.ui erzeugt:
    Code:
    <widget class="QOpenGLWidget" name="openGLWidget">
    <property name="geometry">
    <rect>
    <x>20</x>
    <y>10</y>
    <width>311</width>
    <height>241</height>
    </rect>
    </property>
    </widget>
    </widget>
    Nun habe ich also eine Form mit Quit-Button und openGL Leinwand, aber wie kriege ich jetzt Dinge wie

    ClearScreen();
    SetColor(RED);
    SetBrushWidth(2);
    RectOutline(20, 20, 40, 40);
    SetColor(YELLOW);
    Circle(30, 24, 10);

    in die mainwindow.cpp-Routine
    Code:
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    { }
    damit sie das in den Bereich der definierten openGL Leinwand zeichnet?

  5. #5
    HaWe
    Gast
    OpenGL scheint tatsächlich viel zu schwierig zu sein, QPainter ist angeblich einfacher, doch auch dafür bräuchte ich eine Anleitung, welche Art von canvas Widget dafür ich in die Form einfügen (Graphics_View ?) und welchen genauen Code für die obigen Zeichen-Funktionen und für das passende Widget in mein Hauptprogramm hineinschreiben muss.

    https://github.com/dsyleixa/Raspberr...t/qt_btn_paint

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Um es einfach zu halten würde ich in QML schreiben. Dann schreibst du sowas:
    https://doc.qt.io/archives/qt-5.5/qt...ircle-qml.html

    Wenn du es hart willst:
    QPainter ist ein Cpp-QObject. Willst du das in QML einbinden, solltest du das hier gelesen haben:
    qml-cpp integration
    Du müsstest eine Klasse vom QWidget ableiten, mit Q_PROPERTYs zur Steuerung versehen, den Zeichnen-Code in der Write/Setter-Methode triggern und als QML_ELEMENT markieren.
    Das kannst du dann im QML-Code verwenden.

    Viel Erfolg!

  7. #7
    HaWe
    Gast
    ich brauche es in meinem C++ Programm, in meiner speziell designten Form, weil auch alles an GPIO i/o , ADC, I2C und UART samt Datenverarbeitung in C++ programmiert ist.
    Mir fehlt aber die Kenntnis, wie man genau mit QPainter geometrische Figuren zeichnet, und zwar im Hauptprogramm, und dann nicht in irgendein extra Fenster sondern genau in die dafür eingefügte canvas widget meiner qt GUI form.
    Kurz:
    Ich brauche ein lauffähiges Programm für den qtcreator mit einer mainwindow.ui Datei.

Ähnliche Themen

  1. Tipps Meine Software: LCD-Charakter-Creator
    Von pro-bot128 im Forum Offtopic und Community Tratsch
    Antworten: 3
    Letzter Beitrag: 20.06.2011, 12:55
  2. Ks108 und Graphic Converter
    Von carfan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 10.08.2008, 21:00
  3. Menü Creator
    Von guenter1604 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 02.08.2008, 10:12
  4. Antworten: 6
    Letzter Beitrag: 30.07.2007, 15:30
  5. PIC mit Graphic LCD
    Von chosn im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 02.06.2005, 12:20

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen