MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) { setMenuWidget(createMenuBar(this)); addDockWidget(Qt::TopDockWidgetArea, createDockWidget(this)); setCentralWidget(createCentralWidget(this)); createConnections(); }
void MainWindow::createMenus() { //setMenuWidget(new QPushButton("Hello")); QMenu *menu = new QMenu("File"); menu->addAction("Save &As"); QMenuBar *bar = new QMenuBar; bar->addMenu(menu); setMenuWidget(new QWidget()); }
KviMainWindow::KviMainWindow(QWidget * pParent) : KviTalMainWindow(pParent, "kvirc_frame") { g_pMainWindow = this; setAttribute(Qt::WA_DeleteOnClose); setAutoFillBackground(false); setAttribute(Qt::WA_TranslucentBackground); //disable this flag that gets enabled by qt when using Qt::WA_TranslucentBackground setAttribute(Qt::WA_NoSystemBackground, false); #if !(defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) || defined(COMPILE_KDE_SUPPORT)) // Under windows, the icon is builtin; under kde, KApplication sets it for us // We try to avois this as much as possible, since it forces the use of the low-res 16x16 icon setWindowIcon(*(g_pIconManager->getSmallIcon(KviIconManager::KVIrc))); #endif m_pWinList = new KviPointerList<KviWindow>; setWindowTitle(KVI_DEFAULT_FRAME_CAPTION); m_pWinList->setAutoDelete(false); m_pModuleExtensionToolBarList = new KviPointerList<KviMexToolBar>; m_pModuleExtensionToolBarList->setAutoDelete(false); m_pActiveContext = nullptr; m_pTrayIcon = nullptr; m_pSplitter = new QSplitter(Qt::Horizontal, this); m_pSplitter->setObjectName("main_frame_splitter"); m_pSplitter->setChildrenCollapsible(false); setCentralWidget(m_pSplitter); setIconSize(KVI_OPTION_UINT(KviOption_uintToolBarIconSize)); setButtonStyle(KVI_OPTION_UINT(KviOption_uintToolBarButtonStyle)); m_pWindowStack = new KviWindowStack(m_pSplitter, "mdi_manager"); // This theoretically had to exists before KviWindowStack (that uses enterSdiMode) m_pAccellerators = new KviPointerList<QShortcut>; m_pMenuBar = new KviMenuBar(this, "main_menu_bar"); setMenuWidget(m_pMenuBar); #ifndef COMPILE_ON_MAC m_pMenuBar->setVisible(KVI_OPTION_BOOL(KviOption_boolMenuBarVisible)); #endif if(KVI_OPTION_BOOL(KviOption_boolStatusBarVisible)) { m_pStatusBar = new KviStatusBar(this); setStatusBar(m_pStatusBar); // torque: moved out of status bar constructor // because module init functions executed in load() // couldn't access the status bar via g_pMainWindow->mainStatusBar() // (assignment of m_pStatusBar happened after load() and // the init function) m_pStatusBar->load(); } else { m_pStatusBar = nullptr; } m_pWindowList = nullptr; createWindowList(); if((KVI_OPTION_RECT(KviOption_rectFrameGeometry).width() < 100) || (KVI_OPTION_RECT(KviOption_rectFrameGeometry).height() < 100) || (KVI_OPTION_RECT(KviOption_rectFrameGeometry).x() > g_pApp->desktop()->width()) || (KVI_OPTION_RECT(KviOption_rectFrameGeometry).y() > g_pApp->desktop()->height())) { // Try to find some reasonable defaults // prefer primary screen for first startup int primary_screen = g_pApp->desktop()->primaryScreen(); QRect r = g_pApp->desktop()->screenGeometry(primary_screen); r.setLeft(r.left() + 10); r.setRight(r.right() - 100); r.setTop(r.top() + 10); r.setBottom(r.bottom() - 200); KVI_OPTION_RECT(KviOption_rectFrameGeometry) = r; } resize(KVI_OPTION_RECT(KviOption_rectFrameGeometry).width(), KVI_OPTION_RECT(KviOption_rectFrameGeometry).height()); move(KVI_OPTION_RECT(KviOption_rectFrameGeometry).x(), KVI_OPTION_RECT(KviOption_rectFrameGeometry).y()); if(KVI_OPTION_BOOL(KviOption_boolFrameIsMaximized)) showMaximized(); applyOptions(); installAccelerators(); }