Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. [Moved] Document/View application
Qt 6.11 is out! See what's new in the release blog

[Moved] Document/View application

Scheduled Pinned Locked Moved C++ Gurus
20 Posts 4 Posters 12.3k Views 1 Watching
  • 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #5

    Thanks, I'll give it a try.

    1 Reply Last reply
    0
    • G Offline
      G Offline
      giesbert
      wrote on last edited by
      #6

      Hi mlong,

      I think you meant:

      MainWindow.cpp:
      @
      MainWindow::someMethod() {
      userEntry->userdata(&info); // Pass the address of info.
      // or
      userEntry->userdata(info); // using reference
      }
      @

      as userEntry is a pointer to the UserEntry class...

      Nokia Certified Qt Specialist.
      Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

      1 Reply Last reply
      0
      • A Offline
        A Offline
        andre
        wrote on last edited by
        #7

        Note that you might want to use forward declares in headers instead of includes. That means:

        @
        //MainWindow.h
        struct Information;

        //...
        private:
        Information* m_information;
        @

        and then only in the MainWindow.cpp do the #include of Information.h.

        It makes compilation faster.

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

          No luck - below is the MainWindow and Information code. I left out the UserData code to see if this would work before making it any more complex. This generates a compile error code:

                   request for member 'a' in 'info', which is of non-class type 'Information*'
          

          Is this caused by a syntax error that I am missing?

          MainWindow.h
          @
          #ifndef MAINWINDOW_H
          #define MAINWINDOW_H

          #include <QMainWindow>
          #include "Information.h"

          namespace Ui {
          class MainWindow;
          }

          class MainWindow : public QMainWindow
          {
          Q_OBJECT

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

          private:
          struct information *info;

          private:
          Ui::MainWindow *ui;
          };
          #endif // MAINWINDOW_H
          @

          MainWindow.cpp
          @
          #include "mainwindow.h"
          #include "ui_mainwindow.h"

          MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
          {

          ui->setupUi(this);
          
          info = new information;
          
          info.a = "A";
          info.b = "B";
          info.c = "C";
          

          }

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

          Information.h
          @
          #ifndef INFORMATION_H
          #define INFORMATION_H

          #include <QtGui>

          struct information
          {
          QString a;
          QString b;
          QString c;
          };

          #endif // INFORMATION_H

          @

          Added @ tags around code sections. Please do that yourself next time; Andre

          1 Reply Last reply
          0
          • A Offline
            A Offline
            andre
            wrote on last edited by
            #9

            There seems to be some weird mismatch of #ifdefs and #endif's in your code. Perhaps you should fix these first?

            Oh, and in your MainWindow, you have a pointer to an Information instance, while you do not seem to be creating an instance and trying to assign to it as if it is a normal member variable.

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

              That seems to have come from copying and pasting. The definitions are okay in my files.

              1 Reply Last reply
              0
              • A Offline
                A Offline
                andre
                wrote on last edited by
                #11

                [quote author="CapnMikey" date="1315495836"]That seems to have come from copying and pasting. The definitions are okay in my files.[/quote]
                Then please update your previous post to reflect the actual state of your code.

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

                  Line 15 in Information.h should be line 25 in MainWindow.h. Sorry about the mixup.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    andre
                    wrote on last edited by
                    #13

                    [quote author="CapnMikey" date="1315496093"]Line 15 in Information.h should be line 25 in MainWindow.h. Sorry about the mixup.[/quote]
                    Please just use the Edit button next to your post to modify it and fix the mixup.

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

                      Okay, the code above has been modified.

                      Thanks for pointing out the edit button.

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        giesbert
                        wrote on last edited by
                        #15

                        Your struct is named information, but the definition in mainwindow.h is Information. C++ is case sensitive...

                        Nokia Certified Qt Specialist.
                        Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

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

                          I corrected the case error as well (see post above). I still get the same error message.

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            andre
                            wrote on last edited by
                            #17

                            Did you also note the remark I posted above?

                            [quote author="Andre" date="1315495737"]Oh, and in your MainWindow, you have a pointer to an Information instance, while you do not seem to be creating an instance and trying to assign to it as if it is a normal member variable. [/quote]

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

                              I added line 13 to the MainWindow.cpp above, but I still get the same error message. Is this what you are referring to?

                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                andre
                                wrote on last edited by
                                #19

                                Either, change line 20 in MainWindow.h to
                                @
                                Information info;
                                @
                                and remove line 13 from MainWindow.cpp, or

                                change line 20 in MainWindow.h to
                                @
                                Information* info;
                                @
                                and change lines 15-17 in MainWindow.cpp into:
                                @
                                info->a = "A";
                                info->b = "B";
                                info->c = "C";
                                @
                                and insert this line as line 24:
                                @
                                delete info;
                                @

                                In either case, get yourself a good book on C++ to get yourself a solid introduction into the language you are working with. Qt does not shield you from having to learn C++.

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

                                  Andre (and everyone else)-

                                  Thanks for your help. The first option compiled correctly. Having seen something that works I hope I can figure it out from here.

                                  Your last suggestion is appropriate. However, I have a large stack of books on C++ programming. The problem is the definition of the word "good". I learned chemical thermodynamics by using a large stack of textbooks. None of them were particulary good. But, where one authors explanation failed another author provided a more thorough explanation. I was able to piece it together that way. I haven't found that approach to work well for understanding C++.

                                  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