Какие элементы графического интерфейса использовать для 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();
}