QVector in QWidgetsApplication



  • Hi,
    auf diese Weise lässt sich ein QVector in mainwindow.h nicht deklarieren:

    private:
     QVector <int> VEC(3);	//expected Parameter declarator   expected')'
    

    daher scheint es zunächst nur im Konstruktor möglich zu sein:

    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);    
        QVector <int> VEC(3);
    }
    

    Das Problem ist, dass die Slots nicht auf den QVector zugreifen können,
    wenn er im Konstruktor deklariert wird. Fehlermeldung:
    use of undeclared identifier 'VEC'
    Es muss also irgendwie in mainwindow.h geschehen.
    Da es ja so nicht geht:

    QVector <int> VEC(3);
    

    Scheint das die einzige Möglichkeit zu sein:

    QVector <int> VEC;
    

    Natürlich kann man jetzt das Problem lösen indem man im Konstruktor
    mit push_back() die Größe des QVectors anpasst. Also:

    VEC.push_back(7);
    VEC.push_back(7);
    VEC.push_back(7);
    

    Aber wie ist hier der professionelle Weg?
    Das verstehe ich überhaupt nicht:

    private:
     QVector <int> VEC(3);	//expected Parameter declarator   expected')'
    

    bzw:

    private:
    QVector <int> VEC(int 3);	//expected')'
    

    Diese Fehlermeldung habe ich doch in einer Konsolenanwendung auch nicht.
    Warum also in einer QWidgetsApplication?



  • @theAnfänger77

    Benutze QVector <int> VEC{3}mit C++14, mit C++11 mus es wohl noch QVector <int> VEC = QVector <int> {3} heissen.

    Ansonsten fuktioniert natürlich immer , ui(new Ui::MainWindow), VEC(3)in der Initialisierungsliste.



  • 👍 Vielen Dank!



  • @theAnfänger77 sagte in QVector in QWidgetsApplication:

    Aber wie ist hier der professionelle Weg?

    Zuerst C++ lernen bevor Du mit irgendwelchen GUI-Frameworks rumspielst. Aber das wurde Dir schon des öfteren gesagt.



  • QT ist ganz normales C++. Da passiert kein großartiges Hexenwerk.
    Du beherrschst aber das grundlegende C++-Handwerk noch nicht mal ansatzweise. Deswegen kann ich dir nur raten: Lass die Finger von QT und anderen Frameworks.


Anmelden zum Antworten