#ifndef BLOCK_H
#define BLOCK_H
#include
#include
class Block : public QObject
{
Q_OBJECT
public:
explicit Block(QObject *parent = 0);
signals:
public slots:
void go (int x, int y)
{
r->moveBy (x, y);
}
public:
QGraphicsRectItem * r;
};
#endif // BLOCK_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include
#include "block.h"
QGraphicsScene * scene;
Block * block;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene;
ui->graphicsView->setScene(scene);
scene->addLine(0, 0, 120, 120);
QGraphicsRectItem * r = new QGraphicsRectItem;
r->setRect(10, 10, 200, 100);
r->setPen (QColor ("red"));
r->setBrush (QColor ("cornflowerblue"));
scene->addItem (r);
block = new Block;
block->r = r;
display (this );
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionRun_triggered()
{
QScriptEngine e;
QScriptEngineDebugger debugger;
debugger.attachTo (&e);
QMainWindow * debugWindow = debugger.standardWindow ();
debugWindow->resize (1024, 640);
QScriptValue infoObject = e.newQObject (ui->output);
e.globalObject().setProperty ("info", infoObject);
e.globalObject().setProperty ("win",
e.newQObject (this));
e.globalObject().setProperty ("block",
e.newQObject (block));
e.evaluate (ui->input->toPlainText());
}
#include
void MainWindow::display (QObject * obj)
{
const QMetaObject * cls = obj->metaObject();
int n = cls->propertyCount();
ui->tableWidget->setColumnCount(n);
ui->tableWidget->setRowCount(n);
for (int i = 0; i < n; i++)
{
QMetaProperty p = cls->property (i);
QTableWidgetItem * label = new QTableWidgetItem;
label->setText(p.name());
ui->tableWidget->setItem (i, 0, label);
}
}