QT QLabel array Error

Gast #3753805
Hallo,
wenn ich folgenden Code benutzte, kommt der folgende Error.
1
QLabel* _posLabels[7];
2

3
AnzeigeBreit::AnzeigeBreit(QWidget *parent) :
4
    QMainWindow(parent),
5
    ui(new Ui::AnzeigeBreit)
6
{
7
    ui->setupUi(this);
8

9
    _posLabels = {ui->pos0Label, ui->pos1Label, ui->pos2Label, ui->pos3Label, ui->pos4Label, ui->pos5Label, ui->pos6Label};

QLabel istnatürlich includiert.
1
anzeigebreit.cpp:42:16: error: assigning to an array from an initializer list
2
     _posLabels = {ui->pos0Label, ui->pos1Label, ui->pos2Label, ui->pos3Label, ui->pos4Label, ui->pos5Label, ui->pos6Label};

Weiß jemand, woran das liegt?
Moderator Persönliche Seite #3754048
Als Initialiser sollte es auch in C++ gehen:
1
AnzeigeBreit::AnzeigeBreit(QWidget *parent) :
2
    QMainWindow(parent),
3
    ui(new Ui::AnzeigeBreit)
4
{
5
    ui->setupUi(this);
6

7
    _QLabel* posLabels[] = {ui->pos0Label, ui->pos1Label, ui->pos2Label, ui->pos3Label, ui->pos4Label, ui->pos5Label, ui->pos6Label};
#3754056
Benutz' QVector, dann geht das. Diese []-Arrays sind eh totaler Kram für 
fast jeden Anwendungsfall.
1
#include <QtCore/QVector>
2
#include <QDebug>
3

4
int main(...) {
5
  QVector<int> x;
6
  x = {1, 2, 3};
7
  qDebug() << x;
8
  return 0;
9
}
Gast #3754079
Rolf Magnus schrieb:
> in C++ halt nicht erlaubt ist. Man kann einem Array nichts zuweisen, und
> einen Array-Initialisierer kann man nur - nunja - bei der
> Initialisierung verwenden.

Wie die meisten fehlenden Sprachfeatures kann man auch dieses mit 
hässlichem Schreibaufwand nachrüsten:
1
#include <iostream>
2
#include <initializer_list>
3
#include <algorithm>
4
int foo[5];
5
int main(void)
6
{
7
    auto baz = {1, 2, 3, 4, 5}; // ergibt eine std::initializer_list
8
    std::copy(baz.begin(), baz.end(), foo);
9
    for (int i = 0; i < 5; ++i)
10
        std::cout << foo[i] << "\n";
11
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.