int main() { Sphere sphere(50); TextView textView; GraphicsView graphicsView; GraphicsController graphicsController(&sphere); TextController textController(&sphere); sphere.addObserver(&textView); sphere.addObserver(&graphicsView); textView.update(&sphere); graphicsView.update(&sphere); int i=0; double r,x,y; while(i!=3) { cout<<"1.更改textview半径"<<endl; cout<<"2.更改Graphicsview半径"<<endl; cout<<"3.退出"<<endl; cin>>i; if(i==1) { cout<<"输入半径"<<endl; cin>>r; textController.actionPerformed(r); } if(i==2) { cout<<"输入坐标x,y"<<endl; cin>>x>>y; graphicsController.mouseDragged(x,y) ; }
int main(int argc, char **argv) { QApplication app(argc, argv); if ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_5) == 0) { QMessageBox::critical(0, "OpenGL features missing", "OpenGL version 1.5 or higher is required to run this demo.\n" "The program will now exit."); return -1; } int maxTextureSize = 1024; QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers)); widget->makeCurrent(); if (!necessaryExtensionsSupported()) { QMessageBox::critical(0, "OpenGL features missing", "The OpenGL extensions required to run this demo are missing.\n" "The program will now exit."); delete widget; return -2; } // Check if all the necessary functions are resolved. if (!getGLExtensionFunctions().resolve(widget->context())) { QMessageBox::critical(0, "OpenGL features missing", "Failed to resolve OpenGL functions required to run this demo.\n" "The program will now exit."); delete widget; return -3; } // TODO: Make conditional for final release QMessageBox::information(0, "For your information", "This demo can be GPU and CPU intensive and may\n" "work poorly or not at all on your system."); widget->makeCurrent(); // The current context must be set before calling Scene's constructor Scene scene(1024, 768, maxTextureSize); GraphicsView view; view.setViewport(widget); view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); view.setScene(&scene); view.show(); return app.exec(); }
void History::parseHistory(const std::string &directory) { std::vector<std::string> log_files = getLogFiles(directory); for(auto &file : log_files) { // First of all, we need to parse the file name itself // Extract hostname auto hostname_pos = file.find_first_of('-'); std::string hostname = file.substr(0, hostname_pos); // Extract rank auto rank_pos = file.find_first_of('_') - 1; uint16_t rank = std::stoi(file.substr(hostname_pos + 1, rank_pos)); // Extract tick auto tick_pos = file.find_first_of('-', rank_pos) + 1; uint32_t tick = std::stoi(file.substr(tick_pos)); this->history_states.emplace(tick, std::unique_ptr<HistoryState> (new HistoryState(hostname, rank, tick))); // Now parse the contents of the archive std::ifstream log(file); cereal::BinaryInputArchive archive(log); std::vector<std::unique_ptr<Creature>> temp_creatures; archive(temp_creatures); for(auto &creature : temp_creatures) { history_states[tick]->addCreature(creature, this->scale); GraphicalCreature* graphical_creature = history_states[tick]->getLastCreature(); const std::string species = graphical_creature->getSpecies(); graphical_creature->setPixmap(&images[species]); // Store the tick of this creature in 0 so compare with later during rendering graphical_creature->setData(0, QVariant(tick)); // Store pointer to View in 1 so we can get the slider value later GraphicsView *gview = static_cast<GraphicsView*>(this->scene->views().first()); View *view = gview->getView(); graphical_creature->setData(1, QVariant::fromValue(view)); this->scene->addItem(graphical_creature); } } }
int main(int argc, char **argv) { Q_INIT_RESOURCE(stickman); QApplication app(argc, argv); StickMan *stickMan = new StickMan; stickMan->setDrawSticks(false); QGraphicsTextItem *textItem = new QGraphicsTextItem(); textItem->setHtml("<font color=\"white\"><b>Stickman</b>" "<p>" "Tell the stickman what to do!" "</p>" "<p><i>" "<li>Press <font color=\"purple\">J</font> to make the stickman jump.</li>" "<li>Press <font color=\"purple\">D</font> to make the stickman dance.</li>" "<li>Press <font color=\"purple\">C</font> to make him chill out.</li>" "<li>When you are done, press <font color=\"purple\">Escape</font>.</li>" "</i></p>" "<p>If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "</p></font>"); qreal w = textItem->boundingRect().width(); QRectF stickManBoundingRect = stickMan->mapToScene(stickMan->boundingRect()).boundingRect(); textItem->setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0); QGraphicsScene scene; scene.addItem(stickMan); scene.addItem(textItem); scene.setBackgroundBrush(Qt::black); GraphicsView view; view.setRenderHints(QPainter::Antialiasing); view.setTransformationAnchor(QGraphicsView::NoAnchor); view.setScene(&scene); QRectF sceneRect = scene.sceneRect(); // making enough room in the scene for stickman to jump and die view.resize(sceneRect.width() + 100, sceneRect.height() + 100); view.setSceneRect(sceneRect); view.show(); view.setFocus(); LifeCycle cycle(stickMan, &view); cycle.setDeathAnimation(":/animations/dead.bin"); cycle.addActivity(":/animations/jumping.bin", Qt::Key_J); cycle.addActivity(":/animations/dancing.bin", Qt::Key_D); cycle.addActivity(":/animations/chilling.bin", Qt::Key_C); cycle.start(); return app.exec(); }
History::History(quint16 size_x, quint16 size_y, quint32 max_tick, quint16 scale, QGraphicsScene *scene) : sizeX(size_x), sizeY(size_y), maxTick(max_tick), scale(scale), scene(scene) { // Preload pixmaps std::vector<std::string> species {"goblin", "hobbit", "orc", "elf", "dwarf", "human", "rock"}; for(auto &s : species) { images[s] = QPixmap(QString::fromStdString(":/images/" + s + ".png")); } // Make a grid for (int x = 0; x <= sizeX * scale; x += scale) scene->addLine(x, 0, x, sizeX * scale, QPen(Qt::black)); for (int y = 0; y <= sizeY * scale; y += scale) scene->addLine(0, y, sizeY * scale, y, QPen(Qt::black)); // Set slider to proper max value GraphicsView *view = static_cast<GraphicsView*>(this->scene->views().first()); view->getView()->setMaximumTick(maxTick); }
void BackgroundStateContext::fitInView (GraphicsView &view) { LOG4CPP_INFO_S ((*mainCat)) << "BackgroundStateContext::fitInView"; // After initialization, we should be in unloaded state or some other equally valid state ENGAUGE_ASSERT (m_currentState != NUM_BACKGROUND_STATES); const QGraphicsPixmapItem *imageItem = &m_states [BACKGROUND_STATE_CURVE]->imageItem (); double width = imageItem->boundingRect().width(); double height = imageItem->boundingRect().height(); LOG4CPP_INFO_S ((*mainCat)) << "BackgroundStateContext::fitInView" << " state=" << m_states [m_currentState]->state ().toLatin1().data() << " boundingRect=(" << width << "x" << height << ")"; // Get the image from a state that is guaranteed to have an image view.fitInView (imageItem); }
int emscriptenQtSDLMain(int argc, char *argv[]) #endif { QApplication *app = new QApplication(argc, argv); qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //! [0] //! [1] QGraphicsScene *scene = new QGraphicsScene(-200, -200, 400, 400); for (int i = 0; i < 10; ++i) { ColorItem *item = new ColorItem; item->setPos(::sin((i * 6.28) / 10.0) * 150, ::cos((i * 6.28) / 10.0) * 150); scene->addItem(item); } Robot *robot = new Robot; robot->scale(1.2, 1.2); robot->setPos(0, -20); scene->addItem(robot); //! [1] //! [2] GraphicsView *view = new GraphicsView(scene); view->setRenderHint(QPainter::Antialiasing); view->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); view->setBackgroundBrush(QColor(230, 200, 167)); view->setWindowTitle("Drag and Drop Robot"); #if defined(Q_OS_SYMBIAN) view->showMaximized(); #else view->show(); #endif return app->exec(); }
void BackgroundStateNone::fitInView (GraphicsView &view) { LOG4CPP_INFO_S ((*mainCat)) << "BackgroundStateNone::fitInView"; view.fitInView (imageItem ().boundingRect()); }
int main(int argc, char **argv) { Q_INIT_RESOURCE(stickman); QApplication app(argc, argv); StickMan *stickMan = new StickMan; stickMan->setDrawSticks(false); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) RectButton *buttonJump = new RectButton("Jump"); buttonJump->setPos(100, 125); RectButton *buttonDance = new RectButton("Dance"); buttonDance->setPos(100, 200); RectButton *buttonChill = new RectButton("Chill"); buttonChill->setPos(100, 275); #else QGraphicsTextItem *textItem = new QGraphicsTextItem(); textItem->setHtml("<font color=\"white\"><b>Stickman</b>" "<p>" "Tell the stickman what to do!" "</p>" "<p><i>" "<li>Press <font color=\"purple\">J</font> to make the stickman jump.</li>" "<li>Press <font color=\"purple\">D</font> to make the stickman dance.</li>" "<li>Press <font color=\"purple\">C</font> to make him chill out.</li>" "<li>When you are done, press <font color=\"purple\">Escape</font>.</li>" "</i></p>" "<p>If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "</p></font>"); qreal w = textItem->boundingRect().width(); QRectF stickManBoundingRect = stickMan->mapToScene(stickMan->boundingRect()).boundingRect(); textItem->setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0); #endif QGraphicsScene scene; scene.addItem(stickMan); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) scene.addItem(buttonJump); scene.addItem(buttonDance); scene.addItem(buttonChill); #else scene.addItem(textItem); #endif scene.setBackgroundBrush(Qt::black); GraphicsView view; view.setRenderHints(QPainter::Antialiasing); view.setTransformationAnchor(QGraphicsView::NoAnchor); view.setScene(&scene); QRectF sceneRect = scene.sceneRect(); // making enough room in the scene for stickman to jump and die view.resize(sceneRect.width() + 100, sceneRect.height() + 100); view.setSceneRect(sceneRect); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); view.showMaximized(); view.fitInView(scene.sceneRect(), Qt::KeepAspectRatio); #else view.show(); view.setFocus(); #endif LifeCycle cycle(stickMan, &view); cycle.setDeathAnimation(":/animations/dead"); #if defined(Q_WS_S60) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR) cycle.addActivity(":/animations/jumping", Qt::Key_J, buttonJump, SIGNAL(clicked())); cycle.addActivity(":/animations/dancing", Qt::Key_D, buttonDance, SIGNAL(clicked())); cycle.addActivity(":/animations/chilling", Qt::Key_C, buttonChill, SIGNAL(clicked())); #else cycle.addActivity(":/animations/jumping", Qt::Key_J); cycle.addActivity(":/animations/dancing", Qt::Key_D); cycle.addActivity(":/animations/chilling", Qt::Key_C); #endif cycle.start(); return app.exec(); }
virtual ~TestFixtureForGraphicsViewEvents() { _test_window->deleteLater(); }
GraphicsView* GraphicsView__New_1(::uStatic* __this) { GraphicsView* inst = (GraphicsView*)::uAllocObject(sizeof(GraphicsView), GraphicsView__typeof()); inst->_ObjInit_3(); return inst; }