[[script2]]
 
#ifndef BLOCK_H
#define BLOCK_H
 
#include <QObject>
#include <QGraphicsRectItem>
 
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 <QScriptEngine>
#include <QScriptEngineDebugger>
 
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#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 <QMetaProperty>
 
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);
    }
}
 
script2.txt · Last modified: 2015/03/30 17:14 by 147.32.8.110
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki