Создайте QtLabel внутри класса и вызовите его в MainWindow - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в Qt и столкнулся с проблемой, для которой не нашел решения.

Итак, моя проблема заключается в следующем:

Я пытаюсь сгенерировать QtLabel внутри класса и отображать его в моем mainWindow.

class Hexagon
{
    public:
        QPolygon polygon;
        QLabel *cellText = new QLabel(this);

        Hexagon(int startX, int startY, int length, int row, int cell, char letters[26])
        {
            polygon <<
                        QPoint(startX, startY)
                    <<
                        QPoint(startX+length*qCos(qDegreesToRadians(30.0)), startY-length*qSin(qDegreesToRadians(30.0)))
                    <<
                        QPoint(startX+2*length*qCos(qDegreesToRadians(30.0)), startY)
                    <<
                        QPoint(startX+2*length*qCos(qDegreesToRadians(30.0)), startY+length)
                    <<
                        QPoint(startX+length*qCos(qDegreesToRadians(30.0)),  startY+length+length*qSin(qDegreesToRadians(30.0)))
                    <<
                        QPoint(startX, startY+length);

            cellText->setText(QString(QChar(letters[row])) + QString(QChar(letters[cell])));
            cellText->setGeometry(startX + 35, startY + 10, 40, 20);
            cellText->show();
        }
};

Итак, есть мой класс Hexagon, который создает многоугольник в форме шестиугольника, который можно нарисовать позже. Теперь я пытаюсь добавить QtLabel для каждой ячейки (шестиугольника), которая у меня есть.

Но я сталкиваюсь с ошибкой:

виджет. cpp: 28: Fehler: нет соответствия конструктор для инициализации 'QLabel'

Как я могу исправить эту ошибку и сгенерировать свой Label внутри моего класса и расширить с ним mainWindow?

1 Ответ

1 голос
/ 12 июля 2020

причина ошибки в том, что вы неправильно используете конструктор QLabel

есть только

QLabel(QWidget *, Qt::WindowFlags )
QLabel(const QString &, QWidget *, Qt::WindowFlags )

и нет

QLabel(Hexagon*)

, таким образом, строка с

QLabel *cellText = new QLabel(this);

не действует из-за this

...