Seite 1 von 1

[gelöst]]Text im Fenster ausgeben

Verfasst: 30. Juni 2015 21:36
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.

Re: Text im Fenster ausgeben

Verfasst: 1. Juli 2015 10:36
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

Re: Text im Fenster ausgeben

Verfasst: 1. Juli 2015 18:41
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();
}

Re: Text im Fenster ausgeben

Verfasst: 1. Juli 2015 19:11
von Christian81

Code: Alles auswählen

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

Re: Text im Fenster ausgeben

Verfasst: 1. Juli 2015 23:19
von mampfi
Streng genommen wären es ja "qt-Grundlagen" ;-)

Probier ich demnächst aus.

Re: Text im Fenster ausgeben

Verfasst: 2. Juli 2015 01:07
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.

Re: Text im Fenster ausgeben

Verfasst: 2. Juli 2015 06:23
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

Re: Text im Fenster ausgeben

Verfasst: 2. Juli 2015 10:52
von mampfi
Wobei noch interessant wäre, ob die "Stelle" sprich Datei/Funktion die richtige ist.

Re: Text im Fenster ausgeben

Verfasst: 2. Juli 2015 18:41
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();
    }


Re: [gelöst]Text im Fenster ausgeben

Verfasst: 6. Juli 2015 17:56
von Scary Hallo
Bleibt noch die Frage, warum ist das jetzt in C++-Grundlagen gerutscht? Was hat das mit C++-Grundlagen zu tun?

Re: [gelöst]Text im Fenster ausgeben

Verfasst: 6. Juli 2015 18:03
von mampfi
Das würde ich auch meinen.

Re: [gelöst]Text im Fenster ausgeben

Verfasst: 16. Juli 2015 01:29
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)