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?
-
Benutze
QVector <int> VEC{3}
mit C++14, mit C++11 mus es wohl nochQVector <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.