Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Neue UI deklarieren, wie?

Neue UI deklarieren, wie?

Scheduled Pinned Locked Moved Unsolved German
13 Posts 2 Posters 3.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    taut-florian
    wrote on last edited by
    #1

    Hallo Leute,

    ich bin ein Qt-Anfänger und ein noch größerer GUI-Anfänger.

    Nun meine mit dem Projekt erstellte UI zeigt einen Willkommenstext.
    Ich habe von Hand eine neue UI hinzugefügt, die Headerdatei und die Sourcedatei auch.
    Die haben den selben Inhalt wie die von der UI die nur den Willkommenstext zeigt. Bloß mit frm_Main anstatt frm_Welcome.
    Nun in der Main.cpp also der Haupt-Source meines Projekts, steht "frm_Welcome w;"

    Wenn ich drunter frm_Main x; sage, sagt er mir nicht deklarierte Variable. Auch mit der Variable w funktioniert es nicht.

    Nun frage ich mich woher ich diese Variable kriege. Wo die definiert wird und so weiter.

    Vielen Dank im vorraus

    F. Taut

    Newbie.

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Hallo Florian,

      offensichtlich kennt der compiler then typ "frm_Main" nicht, darum der Fehler bei der Deklaration.

      Hast du in main.cpp als include auch die header-Datei von deiner neuen UI-Klasse hinzugefügt (also #include "frm_Main.h")?

      LG,

      Markus

      1 Reply Last reply
      0
      • T Offline
        T Offline
        taut-florian
        wrote on last edited by
        #3

        Hallo Markus,

        danke für deine Antwort.

        Ja die Headerdatei ist eingebunden.
        Der genaue Fehler:

        conflicting declaration 'frm_Main w'
        previous declaration as 'frm_Welcome w'

        Newbie.

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #4

          Hallo Florian,

          scheinbar hast du die Variable "w" versucht, zweimal zu deklarieren - einmal als Typ "frm_Main", dann als Typ "frm_Welcome". Innerhalb desselben scopes musst du daher einen anderen Variablennamen nehmen.

          LG,

          Markus

          1 Reply Last reply
          0
          • T Offline
            T Offline
            taut-florian
            wrote on last edited by
            #5

            Genau das habe ich versucht, habe versucht die Variable x zu nennen.
            Dann kriege ich die Fehlermeldung nicht deklarierte Variable.

            Nun wollte ich wissen wo dieses 'w' deklariert wird.

            Newbie.

            1 Reply Last reply
            0
            • ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #6

              Hm, vielleicht poste besser einmal den Code von deinen Files.

              1 Reply Last reply
              0
              • T Offline
                T Offline
                taut-florian
                wrote on last edited by
                #7

                -- main.cpp

                #include "vsys_welcome.h"
                #include "vsys_main.h"
                #include <QApplication>

                int main(int argc, char *argv[])
                {
                QApplication a(argc, argv);
                frm_Welcome w;
                frm_Main w;
                // Programmname-Leiste ausblenden
                w.setWindowFlags(Qt::FramelessWindowHint);
                w.show();
                return a.exec();
                }

                -- vsys_welcome.h
                #ifndef VSYS_WELCOME_H
                #define VSYS_WELCOME_H

                #include <QMainWindow>
                #include <QPushButton>

                namespace Ui {
                class frm_Welcome;
                }

                class frm_Welcome : public QMainWindow
                {
                Q_OBJECT

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

                private slots:
                handleButton();

                private:
                QPushButton *btn_WhatsNew;
                Ui::frm_Welcome *ui;
                };

                #endif // VSYS_WELCOME_H

                -- vsys_welcome.cpp

                #include "vsys_welcome.h"
                #include "ui_frm_welcome.h"

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

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

                Newbie.

                1 Reply Last reply
                0
                • ? Offline
                  ? Offline
                  A Former User
                  wrote on last edited by
                  #8

                  Wenn du QtCreator verwendest, ist es übrigens vielleicht auch leichter, die neue GUI Klasse vielleicht über QtCreator hinzuzufügen statt die alte manuell zu kopieren.

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    taut-florian
                    wrote on last edited by
                    #9

                    Danke es hat funktioniert.

                    Ich habe nun noch ein kleines Problem für welches ich nicht extra ein neues Thema aufmachen möchte.

                    Hier: btn_WhatsNew->actions(addAction(QList<QAction));

                    Kriege ich bei 'QAction' : template argument 1 is invalid

                    Newbie.

                    1 Reply Last reply
                    0
                    • ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #10

                      Hallo Florian,

                      das Problem, das du ursprünglich hattest, ist, dass du keine Klasse "frm_Main" definiert hattest. Dadurch konntest du natürlich auch kein Objekt vom Typ dieser Klasse definieren.

                      Ich persönlich verwende die Dateinamen so wie die Klassen, die sie definieren. Dann weiß ich gleich durch das Include, welche Klassen ich zum Programm hinzugefügt habe.

                      Zu deiner anderen Frage:

                      • Was ist btn_WhatsNew für ein Objekt? QPushButton?
                      • Was möchtest du damit machen?

                      LG,

                      Markus

                      1 Reply Last reply
                      0
                      • T Offline
                        T Offline
                        taut-florian
                        wrote on last edited by
                        #11

                        Danke Markus,

                        ja btn_WhatsNew iet ein PushButton, er soll eine Internetseite öffnen, da ich aber nicht weiß wie das geht, wollte ich ihm vorerst keine Funktion zuweisen.

                        Newbie.

                        1 Reply Last reply
                        0
                        • ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by A Former User
                          #12

                          Wenn du den Button einfach nur zum UI hinzufügen möchtest, könntest du im QtCreator z.B. auf die entsprechende .ui klicken und den Button einfach hinzufügen.

                          LG,

                          Markus

                          PS: Und wenn du eine Antwort hilfreich gefunden hast, wäre es nett, diese zu voten (über dem Post der Pfeil nach oben).

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            taut-florian
                            wrote on last edited by
                            #13

                            Danke,

                            wenn ich das ganze auskommentiere kriege ich die Fehlermeldung:

                            undefined reference to 'frm_Welcome::qt_metacall(QMetaObject::Call _c, int _id, void **_a)'

                            Das kommt aus der 'moc_vsys_welcome.cpp' welche wahrscheinlich eine automatisch erzeugte Datei ist, da ich diese nicht erzeuge, weiß nicht wie der Qt-Creator das macht.

                            Newbie.

                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved