Какие элементы графического интерфейса использовать для Qt Tile Map Editor

Я пытаюсь сделать основной редактор карт на основе плиток в Qt Creator. Мне было интересно, что вы будете использовать в Qt Designer для основной сетки, на которую вы "рисуете" плитки для создания карты.

Я попытался использовать виджет таблицы, но (насколько я мог найти) нет способа рисовать изображения (плитки) в таблице вместо текста.

У меня также была идея создать массив кнопок, но мои навыки в Qt ограничены, поэтому я не знал, как это сделать, и это тоже не показалось мне хорошим способом сделать это.

Как бы я это сделал?

1 ответ

Решение

Если вы используете QGraphicsSceneВы можете использовать этот код:

class GridScene : public QGraphicsScene
{
public:
    GridScene(qreal x, qreal y, qreal w, qreal h)
        : QGraphicsScene(x, y, w, h)
    { }

protected:
    void drawBackground(QPainter *painter, const QRectF &rect)
    {
        const int gridSize = 25;

        qreal left = int(rect.left()) - (int(rect.left()) % gridSize);
        qreal top = int(rect.top()) - (int(rect.top()) % gridSize);

        QVarLengthArray<QLineF, 100> lines;

        for (qreal x = left; x < rect.right(); x += gridSize)
            lines.append(QLineF(x, rect.top(), x, rect.bottom()));
        for (qreal y = top; y < rect.bottom(); y += gridSize)
            lines.append(QLineF(rect.left(), y, rect.right(), y));

        qDebug() << lines.size();

        painter->drawLines(lines.data(), lines.size());
    }
};

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    GridScene scene(-1000, -1000, 2000, 2000);
    QGraphicsView view(&scene);
    view.rotate(33);
    view.show();

    return app.exec();
}
Другие вопросы по тегам