什么Qt小部件用于绘制“生活游戏”类应用程序?

时间:2010-09-04 08:03:50

标签: c++ qt graphics

对于实验,我想创建一个简单的图形应用程序。

我的目标并不复杂:我只需要绘制单个像素或不同颜色的线条,并定期刷新视图。类似于Conway's Game of Life

我习惯与Qt合作,但从未接受过这类任务。

我应该使用哪些小部件/对象来开始使用?我应该知道/做什么特别的事情吗?

谢谢。

3 个答案:

答案 0 :(得分:2)

我建议使用“图形视图”框架 http://doc.trolltech.com/4.6/graphicsview.html

它非常强大,远远超过你的需要。

简单地说,对于生命游戏中的生物,创建图形项并为它们设置坐标。没什么。

答案 1 :(得分:1)

使用QTableView实现自己的QAbstractItemDelegate子类来绘制单元格。看看the Pixelator example

答案 2 :(得分:1)

对于简单的像素和线条绘制,您可能希望实现一个基本的QWidget子类并实现paintEvent()。在那里你会做你的绘画

<强> MyWidget.h:

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

class MyWidget : public QWidget
{
    Q_OBJECT

    public:
        MyWidget(QWidget *parent = 0);
    protected:
        void paintEvent(QPaintEvent *event);
};

#endif

<强> MyWidget.cpp:

#include <QtGui>

#include "MyWidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
}

void MyWidget::MyWidget(QPaintEvent * /* event */)
{
    QPainter painter(this);

    // Then do things like..
    painter.drawLine(...
    painter.drawRect(...
}

您可以在此处找到更完整的示例:http://doc.qt.nokia.com/4.6/painting-basicdrawing.html