#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "app.h" using namespace std; int app::run(int argc, char** argv) { QApplication a(argc, argv); QMainWindow * w = create_window("0"); m_windows.push_back(w); w->show(); int time = 0; int delta = 2000; QTimer::singleShot(time += delta, this, SLOT(add_window())); QTimer::singleShot(time += delta, this, SLOT(windows_go_to_screens_old())); QTimer::singleShot(time += delta, this, SLOT(windows_fullscreen())); QTimer::singleShot(time += delta, this, SLOT(windows_nonfullscreen())); QTimer::singleShot(time += delta, this, SLOT(windows_fullscreen())); QTimer::singleShot(time += delta, this, SLOT(windows_nonfullscreen())); return a.exec(); } void app::add_window() { static const char * nums[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; m_windows.push_back(create_window(nums[m_windows.size()])); m_windows.back()->show(); } void app::remove_window() { if (m_windows.size() > 1) { QMainWindow * w = m_windows.back(); m_windows.pop_back(); w->close(); w->deleteLater(); } } void app::windows_go_to_screens() { QList screens = qApp->screens(); for (unsigned i = 0; i < std::min((unsigned)m_windows.size(), (unsigned)screens.size()); ++i) { QMainWindow * mw = m_windows[i]; QScreen * screen = screens[i]; QWindow * wh = mw->windowHandle(); wh->setScreen(screen); } } void app::windows_go_to_screens_old() { QList screens = qApp->screens(); for (unsigned i = 0; i < std::min((unsigned)m_windows.size(), (unsigned)screens.size()); ++i) { QMainWindow * mw = m_windows[i]; QScreen * screen = screens[i]; mw->move(screen->geometry().left(), screen->geometry().top()); } } void app::windows_go_to_primary_screen() { QList screens = qApp->screens(); QScreen * screen = screens[0]; for (unsigned i = 0; i < (unsigned)m_windows.size(); ++i) { QMainWindow * mw = m_windows[i]; QWindow * wh = mw->windowHandle(); wh->setScreen(screen); } } void app::windows_go_to_primary_screen_old() { QList screens = qApp->screens(); QScreen * screen = screens[0]; for (unsigned i = 0; i < (unsigned)m_windows.size(); ++i) { QMainWindow * mw = m_windows[i]; mw->move(screen->geometry().left(), screen->geometry().top()); } } void app::windows_fullscreen() { for (unsigned i = 0; i < m_windows.size(); ++i) { QMainWindow * mw = m_windows[i]; mw->showFullScreen(); } } void app::windows_nonfullscreen() { for (unsigned i = 0; i < m_windows.size(); ++i) { QMainWindow * mw = m_windows[i]; mw->showNormal(); } } QMainWindow * app::create_window(const char * id) { QMainWindow * w = new QMainWindow(NULL); init_menus(w); QWidget * cw = new QWidget(w); w->setCentralWidget(cw); QHBoxLayout * l = new QHBoxLayout(cw); cw->setLayout(l); QLabel * lab = new QLabel(id, cw); QPalette pal(lab->palette()); pal.setColor(QPalette::Background, Qt::red); lab->setAutoFillBackground(true); lab->setPalette(pal); lab->setScaledContents(true); lab->setAlignment(Qt::AlignCenter); l->addWidget( lab ); return w; } void app::init_menus( QMainWindow * w ) { QMenuBar * menubar = w->menuBar(); QMenu * view_menu = new QMenu(tr("View"), w); view_menu->addAction("Add Window", this, SLOT(add_window())); view_menu->addAction("Remove Window", this, SLOT(remove_window())); view_menu->addAction("Windows Go To Screens", this, SLOT(windows_go_to_screens())); view_menu->addAction("Windows Go To Screens (old method)", this, SLOT(windows_go_to_screens_old())); view_menu->addAction("Windows Go To Primary Screen", this, SLOT(windows_go_to_primary_screen())); view_menu->addAction("Windows Go To Primary Screen (old method)", this, SLOT(windows_go_to_primary_screen_old())); view_menu->addAction("Windows Fullscreen", this, SLOT(windows_fullscreen())); view_menu->addAction("Windows Non-Fullscreen", this, SLOT(windows_nonfullscreen())); menubar->addMenu(view_menu); }