Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Accessing value of vector only once
Forum Updated to NodeBB v4.3 + New Features

Accessing value of vector only once

Scheduled Pinned Locked Moved Solved General and Desktop
headervectorperformancefunction
3 Posts 3 Posters 451 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.
  • M Offline
    M Offline
    MEsc
    wrote on 30 Nov 2022, 18:37 last edited by
    #1

    Hello, I have a Question.

    For example:
    void loadfrom() loads values from file into a vector

    I have another function MainWindow::on_start_clicked()
    When this Function get called (here via button),
    values should load in vec.

    QVector<QString> vec = loadfrom();

    And in another function
    MainWindow::on_answer_returned()
    At the moment everytime this function get called the vector loads all values everytime. But I want access the vector in this function from MainWindow::on_start_clicked()

    How can I do this?

    C 1 Reply Last reply 30 Nov 2022, 18:44
    0
    • C Offline
      C Offline
      ChrisW67
      wrote on 30 Nov 2022, 21:50 last edited by
      #3

      @MEsc said in Accessing value of vector only once:

      I have another function MainWindow::on_start_clicked()
      When this Function get called (here via button),
      values should load in vec.
      QVector<QString> vec = loadfrom();

      That looks like vec is a variable local to the slot attached to the button. You load it and then it is destroyed when the slot exits. If you want the vec object to have a longer lifetime then you need to arrange that. As @Christian-Ehrlicher says, making vec a private member variable of the MainWindow class is probably the right approach. So,

      class MainWindow: public QMainWindow {
      ...
      private:
        QVector<QString> m_vec
      };
      
      void MainWindow::on_start_clicked() {
      ...
        m_vec = loadfrom();
      ...
      }
      
      void MainWindow::on_answer_returned() {
      ...
        // do stuff with m_vec
      ...
      }
      

      This is basic C++ knowledge and not Qt specific.

      1 Reply Last reply
      2
      • M MEsc
        30 Nov 2022, 18:37

        Hello, I have a Question.

        For example:
        void loadfrom() loads values from file into a vector

        I have another function MainWindow::on_start_clicked()
        When this Function get called (here via button),
        values should load in vec.

        QVector<QString> vec = loadfrom();

        And in another function
        MainWindow::on_answer_returned()
        At the moment everytime this function get called the vector loads all values everytime. But I want access the vector in this function from MainWindow::on_start_clicked()

        How can I do this?

        C Online
        C Online
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on 30 Nov 2022, 18:44 last edited by
        #2

        @MEsc said in Accessing value of vector only once:

        How can I do this?

        Do not load it again when it's already loaded I would guess. Maybe by storing it in a member variable?

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        1 Reply Last reply
        1
        • C Offline
          C Offline
          ChrisW67
          wrote on 30 Nov 2022, 21:50 last edited by
          #3

          @MEsc said in Accessing value of vector only once:

          I have another function MainWindow::on_start_clicked()
          When this Function get called (here via button),
          values should load in vec.
          QVector<QString> vec = loadfrom();

          That looks like vec is a variable local to the slot attached to the button. You load it and then it is destroyed when the slot exits. If you want the vec object to have a longer lifetime then you need to arrange that. As @Christian-Ehrlicher says, making vec a private member variable of the MainWindow class is probably the right approach. So,

          class MainWindow: public QMainWindow {
          ...
          private:
            QVector<QString> m_vec
          };
          
          void MainWindow::on_start_clicked() {
          ...
            m_vec = loadfrom();
          ...
          }
          
          void MainWindow::on_answer_returned() {
          ...
            // do stuff with m_vec
          ...
          }
          

          This is basic C++ knowledge and not Qt specific.

          1 Reply Last reply
          2

          1/3

          30 Nov 2022, 18:37

          • Login

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