FUNDAMENTALS OF PROGRAMMING Quiz: C++ codes and output

20 views13 pages

Document Summary

#include using namespace std; class mywindow : public qwindow. ~mywindow(); virtual void render(qpainter *painter); virtual void render(); virtual void initialize(); void setanimating(bool animating); public slots: void renderlater(); void rendernow(); protected: 2 bool event(qevent *event); void exposeevent(qexposeevent *event); private: bool m_update_pending; bool m_animating; Mywindow::~mywindow() delete m_camera; delete m_geometries; delete m_program; delete m_device; void mywindow::render(qpainter *painter) Gl_depth_buffer_bit void mywindow::render() if (!m_device) m_device = new qopenglpaintdevice; glclear(gl_color_buffer_bit. 5 renderlater(); void mywindow::renderlater() if (!m_update_pending) { m_update_pending = true; 6 case qevent::updaterequest: m_update_pending = false; rendernow(); return true; default: return qwindow::event(event); void mywindow::exposeevent(qexposeevent *event) Q_unused(event); if (isexposed()) rendernow(); int main(int argc, char **argv) Mywindow window; window. setformat(format); window. resize(800, 600); window. show(); window. setanimating(true); return app. exec(); //keyboard events void mywindow::keypressevent(qkeyevent *event) if (event->key() == qt::key_p) glpolygonmode(gl_front_and_back, gl_point); else if (event->key() == qt::key_l) glpolygonmode(gl_front_and_back, gl_line); 7 else if (event->key() == qt::key_f) glpolygonmode(gl_front_and_back, gl_fill); else if (event->key() == qt::key_c) glpolygonmode(gl_front_and_back, gl_fill); glpolygonmode(gl_back, gl_line); else if (event->key() == qt::key_1) m_geometries->drawtetrahedron(); else if (event->key() == qt::key_2) m_geometries->drawcube(); else.