[gelöst]]Text im Fenster ausgeben

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

[gelöst]]Text im Fenster ausgeben

Beitrag von mampfi » 30. Juni 2015 21:36

Eine auf den ersten Blick profane Frage, würde gerne wissen, wie man in einem qt-Fenster Text ausgibt.


Es geht also um das klassische Hello-World-Programm.

Was in C printf bzw. puts wäre bzw. in klassischem C++ cout.
Zuletzt geändert von mampfi am 7. September 2015 13:06, insgesamt 3-mal geändert.

Scary Hallo

Re: Text im Fenster ausgeben

Beitrag von Scary Hallo » 1. Juli 2015 10:36

Ein Qt-Fenster nennt sich QWidget.
QWidget ableiten.
In deinem Widget die 'paintEvent'-Methode überschreiben:

Code: Alles auswählen

void DeinWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawText(0,0,"Hello World");
}
ungetestet

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: Text im Fenster ausgeben

Beitrag von mampfi » 1. Juli 2015 18:41

Jetzt ist noch die Frage, wo ich das einbaue.

Das entsprechende Objekt der Begierde ist ein automatisch von qtcreator erzeugtes Programm bestehend u.a. aus:

main.cpp
mainwindow.cpp
mainwindow.h

(und manuell von mir eingefügtem Button nebst Routinen für das Verlassen des Programms)

mainwindow.cpp ist wohl die Stelle an der das Codebeispiel eingebaut werden, hier taucht qtwidget auf:

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>


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

    connect(ui->pushButton_ende, SIGNAL(clicked()), SLOT(anwendung_quit()));
}

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


void MainWindow::anwendung_quit()

{
 qApp->quit();
}

Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Text im Fenster ausgeben

Beitrag von Christian81 » 1. Juli 2015 19:11

Code: Alles auswählen

QLabel *lbl = new QLabel("Hello World");
Und jetzt ab nach C++ Grundlagen damit :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: Text im Fenster ausgeben

Beitrag von mampfi » 1. Juli 2015 23:19

Streng genommen wären es ja "qt-Grundlagen" ;-)

Probier ich demnächst aus.

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: Text im Fenster ausgeben

Beitrag von mampfi » 2. Juli 2015 01:07

Entsprechendes Codefragment eingesetzt

Mit "einfachem C++-Verstand" verstehe ich das Statement so: Es wird ein Zeiger auf ein Object vom Typ QLabel erstellt, aber es wird nichts damit getan.

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>


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

  QLabel *lbl = new QLabel("Hello World"); /******************************** Hier ************************************/


   connect(ui->pushButton_ende, SIGNAL(clicked()), SLOT(anwendung_quit()));
}

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


void MainWindow::anwendung_quit()

{
 qApp->quit();
}


Fehlermeldung, qtcreator

qt_widget1/mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)':
../qt_widget1/mainwindow.cpp:12:12: warning: unused variable 'lbl' [-Wunused-variable]
QLabel *lbl = new QLabel("Hello World");

Danach wird entsprechend der Fehlermeldung das QLabel-Object ignoriert und das Programm ausgeführt.

Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Text im Fenster ausgeben

Beitrag von Christian81 » 2. Juli 2015 06:23

Dem Label sollte man natürlich noch sagen, dass es auch sichtbar sein sollte ... ein show() z.B. Oder man schaut gaaanz kurz in die Doku:
http://doc.qt.io/qt-4.8/qlabel.html#details
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: Text im Fenster ausgeben

Beitrag von mampfi » 2. Juli 2015 10:52

Wobei noch interessant wäre, ob die "Stelle" sprich Datei/Funktion die richtige ist.

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: Text im Fenster ausgeben

Beitrag von mampfi » 2. Juli 2015 18:41

So, ich hab im debian-Forum auch mal die Fragestellung gepostet und dabei ist folgende Näherung herausgekommen:
(https://debianforum.de/forum/viewtopic. ... 2#p1048962)

Problem ist als gelöst zu betrachten.

(Der neue Button pushButton_hello führt Entsprechendes aus)

Code: Alles auswählen

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QtGui>


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


        connect(ui->pushButton_hello, SIGNAL(clicked()), SLOT(hello_world()));
        connect(ui->pushButton_ende, SIGNAL(clicked()), SLOT(anwendung_quit()));
    }

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

    void MainWindow::hello_world()

    {
        qDebug()<<"Hallo Welt im debug-Fenster";
        ui->pushButton_hello->setText("Hallo Welt");
    }


    void MainWindow::anwendung_quit()

    {
     qApp->quit();
    }


Scary Hallo

Re: [gelöst]Text im Fenster ausgeben

Beitrag von Scary Hallo » 6. Juli 2015 17:56

Bleibt noch die Frage, warum ist das jetzt in C++-Grundlagen gerutscht? Was hat das mit C++-Grundlagen zu tun?

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: [gelöst]Text im Fenster ausgeben

Beitrag von mampfi » 6. Juli 2015 18:03

Das würde ich auch meinen.

mampfi
Beiträge: 42
Registriert: 4. Juni 2015 11:32

Re: [gelöst]Text im Fenster ausgeben

Beitrag von mampfi » 16. Juli 2015 01:29

Kleiner Nachtrag:

Bin noch auf das gestoßen:

http://cs.smith.edu/dftwiki/index.php/Q ... pplication

(Allerdings noch nicht ausprobiert, in meinem Demo-Programm)

Antworten