Qt: Auf Mausklick im lineEdit reagieren

Zuse1

Ensign
Registriert
Juni 2018
Beiträge
246
Guten Tag zusammen!
Gibt es keine Möglichkeit auf das Klicken mit der Maus in einem lineEdit-Widget zu reagieren? Ich habe leider kein passendes Signal dazu gefunden.

Danke sehr
 
Danke sehr für Eure Antworten. Ich habe jetzt mal ausprobiert die Klasse lineEdit indirekt von der Klasse QWidget abzuleiten. Es wird zwar das neue lineEdit erzeugt, aber auf das Klicken mit der Maus wird leider nicht reagiert.
Ich poste mal die Dateien. Ich hoffe, ich habe nicht komplett alles falsch gemacht :(

main.cpp:
C++:
#include "mainwindow.h"

#include <QApplication>

#include "meinlineedit.h"


int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    MainWindow w;

    meinLineEdit *mlineEdit = new meinLineEdit(&w);

    mlineEdit->setGeometry(40, 40, 90, 20);

    w.show();

    return a.exec();

}


meinlineedit.h:
C++:
#ifndef MEINLINEEDIT_H

#define MEINLINEEDIT_H

#include <QLineEdit>


class meinLineEdit:public QLineEdit

{

    Q_OBJECT

public:

    meinLineEdit(QWidget *wid);

public slots:

    void on_mlineEdit_mousePressEvent();

};

#endif // MEINLINEEDIT_H


meinlineedit.cpp:
C++:
#include "meinlineedit.h"

#include <QLabel>


meinLineEdit::meinLineEdit(QWidget *wid):QLineEdit(wid)

{

}


void meinLineEdit::on_mlineEdit_mousePressEvent()

{

    QLabel *mlabel = new QLabel(this);

    mlabel->setGeometry(10, 10, 30, 20);

    mlabel->setText("geklickkt");

}


mainwindow.h:
C++:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>


namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

    Q_OBJECT

public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

private:

    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H


mainwindow.cpp:
C++:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

}


MainWindow::~MainWindow()

{

    delete ui;

}

Ich sag schon mal Danke für jeden Hinweis.
 
Du musst nicht nochmals selber Erben soweit ich das einschätzen kann.
Eigtl willst du doch nur für ein einziges QLineEdit-Objekt deiner UI etwas tun, wenn eines seiner Signale eintritt?
Das ist ganz normal Signal-Slot Verbindung für die Variable des ui-elements. Quasi Standard-Qt. Genau wie, wenn man einen Button klickt oder sonstwas.

Nutzt du den QtCreator und darin den Designer? Damit kannst du einfach rechtsklick auf das konkrete UI-Element machen und irgendwoe ne eigene Slot-Implementierung an eines von allen (auch die von QWidget geerbten) Signals hängen
 
  • Gefällt mir
Reaktionen: alexx_pcfreak
kuddlmuddl, ich möchte eine Slot-Methode ausführen lassen, wenn man auf ein lineEdit-Widget klickt.

Ich nutze den Qt Creator und den darin beinhaltenden Designer. Das mit dem Rechtsklick funktioniert nicht, da keines der Signale bei einem Klick ausgelöst wird. Folgende Sinale bietet er mir an:
cursorPosition(int, int)
editingFinished()
returnPressed()
selectionChanged()
textChanged(QString)
textEdited(QString)
destroyed()
destroyed(QObject*)
objectNameChanged(QString)
customContextMenuRequested(QPoint)
 
Ich habe den Fehler nun eingrenzen können. Und zwar wird die überschriebene Methode mousePressEvent tatsächlich bei einem Klick ausgeführt, jedoch wird das Label nicht auf dem Formular erzeugt.

C++:
void meinLineEdit::on_mlineEdit_mousePressEvent()

{

    QLabel *mlabel = new QLabel(this);    //der this-Zeiger ist falsch

    mlabel->setGeometry(10, 10, 30, 20);

    mlabel->setText("geklickkt");

}


Das liegt wohl daran, das ich beim Erzeugen des Labels die falsche Adresse angegeben habe. Ich habe nämlich den this-Zeiger angegeben und dieser "zeigt" ja immer auf die aktuelle Klasse, in diesem Fall der Klasse meinLineEdit und somit wird das Label wahrscheinlich auch nur innerhalb des meinLineEdit-Widgets angelegt statt im Formular. Eigentlich müsste ich ja die Adresse des Formulars angeben, also die Instanz "w" der Klasse MainWindow die automatisch von Qt angelegt wird. Nur das funktioniert innerhalb der Klasse meinLineEdit ja nicht... "w" ist ja nur in der main.cpp gültig.

Wie löse ich nun das Problem?
 
Zuletzt bearbeitet:
Zuse1 schrieb:
Wie löse ich nun das Problem?

Ich habe leider aktuell keinen QtCreator mit installierten Qt in Reichweite auf meinen PCs.

Was genau erhoffst du dir von "mlabel->setText("geklickkt");"?
Selbst wenn das QLabel sichtbar wäre: Dann gäbe es an den Koordinaten nur ein umherfliegendes QLabel mit diesem Text.

Mach doch für einen aller ersten Test mal:
Code:
void meinLineEdit::on_mlineEdit_mousePressEvent()
{
  // setText ist einfach nur eine von QLineEdit geerbte Memberfunktion, die gleichzeitig ein Slot ist.
  // this-> am Anfang dieser Zeile ist überflüssig und in C++ unüblich da immer implizit.
  setText("geklickt");
}

Außerdem bin ich recht sicher, dass
  • Du keine eigene Klasse benötigst
  • Du einfach nur eins der existierenden Signale (geerbt von QWidget) mit einem eigenen Slot verbinden musst
  • Du durch das new einen Memory-Leak verursachst, da du nirgens delete benutzt
 
Zuletzt bearbeitet:
Hallo, kuddlmuddl
Was genau erhoffst du dir von "mlabel->setText("geklickkt");"?
Ich wollte damit nur mal testen, die Eigenschaften eines anderen Widgets zu ändern. Ich habe also nichts konkretes vor, aber solche Codes sollten zum Basis-Wissen gehören. In VB.NET war das damals kinderleicht, man musste nur das passende Event auswählen, die Methode wurde automatisch hergestellt. Das funktioniert mit Qt ja auch, nur wird mir kein passendes Signal angeboten. Das geht bestimmt ganz einfach, nur tuh ich mich damit irgendwie schwer. Sobald ich das einmal verstanden habe, sollte das denke ich keine Probleme mehr bereiten
 
Um auf das mousePressEvent zu reagieren, muss ich das lineEdit-Widget per Hand erzeugen. Das heißt, eine eigene Klasse erzeugen die von QLineEdit erbt und die Methode mousePressEvent überschreibt. Nur dann habe ich keinen Zugriff auf die Widgets die mit dem Designer erzeugt wurden. Anders scheint es nicht zu klappen. Ich bin seit Tagen am rumprobieren, aber irgendwie bin ich wohl zu blöd
 
Zuse1 schrieb:
aber irgendwie bin ich wohl zu blöd
Sorry, das liegt nicht an dir. Ich habe dich auch ausversehen in die falsche Richtung geschickt.
SubClass IST notwendig, wie beim Post #2 schon stand: https://doc.qt.io/qt-5/qwidget.html#mousePressEvent


Ich habe dir zum wieder gutmachen ;) ein Video aufgezeichnet, wie es funktioniert und du in ein mouseReleaseEvent reinspringst in deinem CustomLineEdit:
https://www.dropbox.com/s/gzu537xf37luxoi/2019-07-13 13-33-17_tmp.mp4?dl=0
 
Hallo,
das ist echt nett von Dir. Interessante Vorgehensweise. Ich habe es nur hinbekommen indem ich das LineEdit komplett per Code erzeuge, aber so wie Du das machst finde ich die nachträgliche Anpassung des LineEdits im Qt Designer komfortabler.

Jetzt fehlt nur noch der Zugriff auf ein Label was per Qt Designer erstellt wurde. Und zwar möchte ich mehrere LineEdits erzeugen, und bei einem Klick auf ein LineEdit soll sich der Text des Labels verändern. Beispiel:
Ich klicke auf das LineEdit1, dann soll der Text von Label1 z.B. "Das erste LineEdit wurde angeklickt" erscheinen.
Beim zweiten LineEdit soll dann der Text von Label1 dann z.B. "Das zweite LineEdit wurde angeklickt" erscheinen usw. Nur als Beispiel.
Es geht also darum, von verschiedenen Objekten (LineEdits) auf immer das gleiche Label zuzugreifen. Im Formular existiert also immer nur das selbe Label, aber es gibt mehrere LineEdits die den Text des einen Labels verändern. Gibt es da eine Lösung? Ich sehe da leider keine Möglichkeiten. In VB.Net ist das überhaupt kein Problem. C++ und Qt muss ich erstmal richtig verstehen.

Ein schönes Wochenende noch
 
Zuse1 schrieb:
Es geht also darum, von verschiedenen Objekten (LineEdits) auf immer das gleiche Label zuzugreifen. Im Formular existiert also immer nur das selbe Label, aber es gibt mehrere LineEdits die den Text des einen Labels verändern. Gibt es da eine Lösung?

800008


Hi, sowas macht man am besten mit Signal/Slot.
Die Widgets sind ja wie in einem Baum: Oben ist das Mainwindow, darunter hängen die LineEdits und das Label. Dh in der LineEdit Klasse direkt das Label ändern geht erstmal nicht, weil die LineEdits das Label nicht kennen. Man könnte jetzt extrem häßlich einen Pointer auf das Label in die LineEdits reingeben.. aber dann kann es ja sein, dass du irgendwann mal im MainWindow das Label löscht und dann nutzen die LineEdits weiter den Pointer, obwohl er mitlerweile ungültig ist.
Schöner ist im Baum wieder hoch zu gehen mittels Signal/Slot. Das MainWindow kennt ja die LineEdits und auch das Label. Also zB so:

C++:
// mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void slotLineEditReleasedWithText(QString text);
    void slotLineEditReleasedWithTextForLE3(QString text);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

C++:
// mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->lineEdit, &MyNewCustomLineEdit::releasedWithText,
            this, &MainWindow::slotLineEditReleasedWithText);
    connect(ui->lineEdit_2, &MyNewCustomLineEdit::releasedWithText,
            this, &MainWindow::slotLineEditReleasedWithText);
    connect(ui->lineEdit_3, &MyNewCustomLineEdit::releasedWithText,
            this, &MainWindow::slotLineEditReleasedWithTextForLE3);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::slotLineEditReleasedWithText(QString text)
{
    qDebug() << Q_FUNC_INFO << ", LineEdit 1 or 2 clicked. Its text is " << text;
    ui->label->setText("LineEdit 1 or 2: " + text);
}

void MainWindow::slotLineEditReleasedWithTextForLE3(QString text)
{
    qDebug() << Q_FUNC_INFO << ", LineEdit 3 clicked. Its text is " << text;
    ui->label->setText("LineEdit 3: " + text);
}

C++:
// mynewcustomlineedit.h

#ifndef MYNEWCUSTOMLINEEDIT_H
#define MYNEWCUSTOMLINEEDIT_H

#include <QLineEdit>

class MyNewCustomLineEdit : public QLineEdit
{
    Q_OBJECT
public:
    explicit MyNewCustomLineEdit(QWidget *parent = nullptr);

signals:
    void releasedWithText(QString text);

public slots:

protected:
    void mouseReleaseEvent(QMouseEvent *event);
};

#endif // MYNEWCUSTOMLINEEDIT_H

C++:
// mycustomlineedit.cpp

#include "mynewcustomlineedit.h"

#include <QDebug>
#include <QMouseEvent>

MyNewCustomLineEdit::MyNewCustomLineEdit(QWidget *parent) : QLineEdit(parent)
{

}

void MyNewCustomLineEdit::mouseReleaseEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton)
    {
        qDebug() << Q_FUNC_INFO;
        emit releasedWithText(text());
    }
}
Ergänzung ()

Je nachdem, wie spezifisch du auf die LineEdit Nummer reagieren willst habe ich beide Beispiele hier einmal eingebaut: 2 LineEdits landen im gleichen Slot und man weiß nicht, welches geklickt wurde - kennt aber den Inhalt.
Und nochmal den anderen Fall: Es gibt einen seperaten Slot für das dritte LineEdit und weiß daher im Slot auch, dass lineEdit_3 geklickt wurde und kann daher text-unabhängig auch diese Information nutzen.
 
Zuletzt bearbeitet:
Super! Es funktionöselt wie es soll :)
In dem Code hat aber der Parameter "QString text" des Signals keine Wirkung. Wie kann man den Parameter einsetzen?

Danke Dir und einen schönen Sonntag noch

------------------------------------Edit---------------------------------------------
Habe ich gerade selber herausgefunden. Und zwar beim Aussenden des Signals mittels emit in der überschriebenen Methode mouseReleaseEvent. emit war mir vorher völlig unbekannt.

Du hast mir echt weitergeholfen. So langsam verstehe ich das ganze. Muss aber noch viel üben. Wenn Du noch irgendwelche Tipps oder ähnliches hast, nur her damit :)
 
Zuletzt bearbeitet:
Hi, ja schön, dass es geplappt hat.
In "emit releasedWithText(text());" steckt halt viel drin. text() ist hierbei diese Funktion, welche dein CustomLineEdit von QLineEdit geerbt hat: https://doc.qt.io/qt-5/qlineedit.html#text-prop
Sie returned, was gerade in dem LineEdit drinsteht.
Das signal "void releasedWithText(QString text);" schickt eben diesen aktuellen QString. Die Slots "void slotLineEditReleasedWithText(QString text);" und "void slotLineEditReleasedWithTextForLE3(QString text);" 'empfangen' diesen QString als Argument.
Im single-thread Fall von dir sind das alles auch nur simple Funktionsaufrufe. Dh durch den connect(...) wird durch MyNewCustomLineEdit::mouseReleaseEvent direkt die Liste der verbundenen Slots nacheinander aufgerufen.

Dadurch lässt sich dann auch die Frage
Zuse1 schrieb:
In dem Code hat aber der Parameter "QString text" des Signals keine Wirkung. Wie kann man den Parameter einsetzen?
beantworten. In den beiden Slots slotLineEditReleasedWithText und slotLineEditReleasedWithTextForLE3 wird ja der text als Argument empfangen und du könntest auch Code schreiben ala
C++:
if (text == QString("blabla"))
{
    // do sth
}
. Daher auch das Beispiel mit den zwei Empfangs-Slots, weil anhand von "blabla" ist eben nicht klar, aus welche LineEdit (1 oder 2?) der blabla QString kommt. Wenn du aber für jedes LineEdit einen EIGENEN Slot machst (slotLineEditReleasedWithTextForLE3) ist klar, dass egal, was in text drinsteht, dieser Slot aufgerufen wurde, weil jemand lineEdit_3 angeklickt hat.

Generelle Tipps? Naja ich glaube du bist auf nem guten Weg und musst dich jetzt halt durchwurschteln ;) Ohne das tatsächliche ausprobieren lernt man Programmieren nicht. Sobald man die Grundlagen hinbekommt geht eben auch viel Zeit in das Lernen der "Frameworks", wie hier eben Qt.

Manchmal sollte man sich aber fragen: Bin ich auf dem richtigen Weg? Wenn wie in deinem Fall das "klicken auf LineEdit an Label übergeben" nicht einfach ist, liegt es eben einfach auch daran, dass dies eine ungewöhnliche Verwendung von LineEdit und Label ist.
Man braucht aber etwas "selbstbewusstsein" bzw. Erfahgung um sich dann schon das Urteil zuzutrauen "eigtl. bin ich gut genug, sowas zu schaffen und die Tatsache, dass es nicht einfach klappt zeigt mir, dass ich einen anderen Weg probieren sollte". Wenn man noch etwas neu in so einem Gebiet ist, liegt es ja (leider ;) eher am eigenen Unvermögen.

Generell sollte man sich durch signal/slot/connect im Idealfall nicht verleiten lassen zu viele "lange" Spaghetti-Artige Abhängigkeiten durch seine Software zu ziehen. Du kannst ja quasi alles mit allem verbinden. Dadurch wird deine Software aber das gegenteil von "lose gekoppelt". Dh die Komponenten werden "abhängiger" und daher schwieriger zu verändern, weil man eher entfernte Komponenten beeinflusst.

Ein ganz anderer Weg wäre übrigens auch gewesen ein komplett eigenes CustomWidget zu designen und alle Komponenten (LineEdits und Label) dort drin zu verdrahten. Dann wäre es auch weniger häßlich in diesem CustomWidget im Slot der LineEdits direkt das Label zu verändern.

Und zu deiner Frage aus der Message nach lieblings-Toolkit:
Leider hat bei mir im Beruf fast immer die Hardwarechips, das Zielsystem oder ein bereits existierendes Projekt alles vorgeben, daher wurde es meist altes Visual Studio oder Eclipse aber ich würde, wenn ich die Wahl habe, immer den QtCreator als IDE vorziehen und auch Qt verwenden. Erfahrung mit Java/C# habe ich aber auch zu wenig, um das fair vergleichen zu können. Nach einigen Jahren C++ und Qt muss ich aber sagen, dass ich es immernoch sehr sehr gerne mag. Durch Qt und C++11 wird C++ wie eine der netteren Sprachen benutzbarer. Boost ist (imho) mühseliger zB von der lesbarkeit her.
QtCore geht auch ohne UI und wird ab Systemen mit 16MB Ram unterstützt. Außerdem kann man es dymanisch gelinkt auch kommerziell in Produkten verkaufen ohne Lizenzen zu zahlen. Ich halte es also für eine sehr sinnvolle Unterstützung für viele C++ Projekte.
 
Zuletzt bearbeitet:
Hallo kuddlmuddl,
Danke sehr für die ausführliche Erklärung und guten Tipps.

Das mit dem CustomWidget klingt auch ganz verlockend. Sobald ich mich an Qt gewöhnt habe, werde ich mich mal mit dem Thema beschäftigen.

Embedded-Programmierung würde mich auch mal sehr interessieren. Da hat man ja richtig viele Möglichkeiten der Kreativität. Aber einen Schritt nach den anderen ;)
 
Ich habe ein bisschen rumprobiert und stehe vor einem kleinen Problem. Ich möchte den Inhalt zweier LineEdits vertauschen. Also einen Ringtausch mit zwei Widgets durchführen.

Wie kann man den Inhalt zweier LineEdits innerhalb einer eigenen Klasse tauschen?
Ich erstelle eine eigene Klasse für LineEdits, so wie nach deinem Beispiel.
Nun möchte ich per pushButton_click() den Inhalt der beiden LineEdits miteinander vertauschen.
Die einfachste Möglichkeit wäre in der Methode clicked() des PushButtons innerhalb der mainwindow.cpp-Datei folgende Zeilen:

QString lbl1 = ui->label1->text(); //zum Zwischenspeichern
ui->label1->setText(ui->label2->text());
ui->label2->seText(lbl1);

Das muss doch auch innerhalb der Klassen irgendwie möglich sein?
Meine Idee war, einen Zeiger in der Klasse zu vereinbaren mit einem Typ der Klasse, und dann die Adresse als Attribut zu speichern. Also, dass jedes LineEdit ein Attribut vom Typ der Klasse besitzt worin die Adresse des anderen LineEdits ist.

Dieses Vorgehen kenne ich von Strukturvariablen. Aber ich schaffe es nicht auf Klassen umzusetzen.

Ist meine Idee mit dem speichern der Adresse des anderen Attributs grundsätzlich in Ordnung, oder wird es in der Regel anders gehandhabt? Ich möchte es so korrekt wie möglich machen, damit ich mir gleich die richtige rangehensweise aneigne, und nicht so einen Murkscode produziere.

Danke sehr
 
Zuse1 schrieb:
Das muss doch auch innerhalb der Klassen irgendwie möglich sein?
Hi, innerhalb welcher Klassen genau? Button und LineEdit sind dafür nicht geeignet.
Stell dir mal den Baum deiner UI vor:
802183


Der Swap muss nunmal von jemanden gemacht werden, der die beiden LineEdits kennt - und der auch noch informiert werden kann, wenn der button geklickt wurde. In diesem Fall ist das mainwindow auf jeden Fall die beste Lösung.
Fang lieber nicht an mit irgendwelchen Pointern quer zwischen den Elementen der UI hin- und herzuschießen.
Wenn der button_1 clicked wurde ist die Implementierung des Slots ja auch erstmal im mainWindow - von dort aus kann man dann auch sauber den lineEdits ihren neuen Text zuweisen, wie du es gemacht hast.

Was stört dich denn an dieser Lösung? Du hast sie ja im Grunde schon implementiert gehabt und dafür sogar nur wenige Zeilen benötigt. Das spricht doch stark dafür, dass du alles richtig machst.

Wahrscheinlich stört dich, dass dann irgendwann aller Sourcecode im Mainwindow landet?

Dafür gibts ne einfache Lösung:
802184


Dh du erschaffst ein MyLineEditSwapperWidget, welches von QWidget erbt - genau wie dein CustomLineEdit auch von QLineEdit.
Dieses neue Widget ist eigentlich genau wie dein Mainwindow. Du kannst dort bequem die signale/slots der dazugehören UI-EWlemente (button_1, lineEdit_1, lineEdit_2) miteinenader verbinden. Und der Sourcecode bleibt in diesem lineEditSwapper und du müllst nicht alles ins mainWindow.
Das ganze skaliert auch großartig, weil du mit 'Other widgets' beliebig viele weitere Widgets dem mainWindow hinzufügen könntest, die auch irgendwelchen Kram machen.

Es geht im Grunde genau wie in dem Video, was ich gemacht hatte. Diesmal solltest du aber nicht einfach nur eine C++ Klasse (.h, .cpp) erstellen sondern stattdessen ein Designer-Klasse. Dann wird auch direkt die .ui Datei erzeugt und du kannst - genau wie im MainWindow - diesem Widget deine Elemente button_1, lineEdit_1 und lineEdit_2 hinzufügen:
802186



Das MainWindow besteht dann nur noch aus einem einzigen Fenster in dem genau ein Widget vom Typ "MyLineEditSwapperWidget" erstellt wird. Es sollte dann auch keinen selbstgeschriebenen Sourcecode mehr geben in deiner MainWindow.cpp, weil der ganze signal/slot/connect/swap kram dann in mylineeditswapperwidget.cpp liegt.
Ergänzung ()

Edit:
MyCustomLineEdit brauchst du dann natürlich garnicht mehr. Jetzt genügt ja ein normales QLineEdit, weil du auf das klicken nicht mehr (wie zuvor etwas ungewöhnlich) im LineEdit reagierst.
mainwindow.ui
802194


mylineeditswapperwidget.ui
802193


// mylineeditswapperwidget.cpp:
C++:
#include "mylineeditswapperwidget.h"
#include "ui_mylineeditswapperwidget.h"

MyLineEditSwapperWidget::MyLineEditSwapperWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyLineEditSwapperWidget)
{
    ui->setupUi(this);
}

MyLineEditSwapperWidget::~MyLineEditSwapperWidget()
{
    delete ui;
}

void MyLineEditSwapperWidget::on_pushButton_clicked()
{
    QString lbl1 = ui->lineEdit->text();
    ui->lineEdit->setText(ui->lineEdit_2->text());
    ui->lineEdit_2->setText(lbl1);
}

// mainwindow.cpp
C++:
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

 

Anhänge

  • 1563655847090.png
    1563655847090.png
    4,4 KB · Aufrufe: 270
Zuletzt bearbeitet:
Zurück
Oben