#include #include #include #include #include #include #include #include // The problem occurs only if the program is not perfectly responsive. class CToolBarTimer : public QObject { int m_timerId; QToolBar *m_tb; public: CToolBarTimer(QToolBar *tb):m_tb(tb) { m_timerId = startTimer( 200 ); } void timerEvent( QTimerEvent* ) { qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonPress, QPoint(6,7),Qt::LeftButton,0,0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(6,7),Qt::LeftButton,Qt::LeftButton, 0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(27,23),Qt::LeftButton,Qt::LeftButton,0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(30,27),Qt::LeftButton,Qt::LeftButton,0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(162,109),Qt::LeftButton,Qt::LeftButton,0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(10,4),Qt::LeftButton,Qt::LeftButton,0)); qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(9,4),Qt::LeftButton,0,0)); } }; class CMainWindowTimer : public QObject { int m_timerId; QMainWindow *m_w; public: CMainWindowTimer(QMainWindow *pmw) : m_w(pmw) { m_timerId = startTimer( 100); } void timerEvent( QTimerEvent* ) { qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonPress, QPoint(230,370), Qt::LeftButton,0,0)); qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(230,370), Qt::LeftButton,0,0)); } }; class CMainWindowCloseTimer : public QObject { int m_timerId; public: CMainWindowCloseTimer() { m_timerId = startTimer( 1000 ); } void timerEvent( QTimerEvent* ) { qApp->quit(); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow w; QToolBar* pToolBar = new QToolBar; pToolBar->setFloatable( false ); pToolBar->addAction("Action 1"); pToolBar->addAction("Action 2"); pToolBar->addAction("Action 3"); w.addToolBar( pToolBar ); w.resize( 800,600 ); w.show(); CToolBarTimer *tbMoveTimer = new CToolBarTimer(pToolBar); CMainWindowTimer *mwClickTimer = new CMainWindowTimer(&w); CMainWindowCloseTimer *closeTimer = new CMainWindowCloseTimer(); return a.exec(); }