[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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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 »

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