📄 mainwindow.cpp~
字号:
#include <qapplication.h>#include <qwidget.h>#include <qsignalmapper.h>#include <qworkspace.h>#include <qaction.h>#include <qtoolbar.h>#include <qmenubar.h>#include <qstatusbar.h>#include <qpopupmenu.h>#include <qmessagebox.h>#include <qtextcodec.h>#include <qvbox.h>#include "mypictures.h"#include "mypicture.h"#include "mainwindow.h"
#include "mdichild.h"#include <string>using namespace std;//init main window,create menu, create toolbar,create statusbarMainWindow::MainWindow() : QMainWindow( 0, "Main Window", WDestructiveClose )
{ m_pVBox = new QVBox( this ); m_pVBox->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
m_pWorkspace = new QWorkspace(m_pVBox);
setCentralWidget(m_pVBox); m_pWorkspace->setScrollBarsEnabled(true);
CreateActions();
CreateMenus();
CreateToolBars();
CreateStatusBar();
m_pMyPictures = new CMyPictures(); m_pMyPictures->BuildPictures("./table/describePicture.txt");
list<CMyPicture*>::iterator iter; int index = 0; for( iter = m_pMyPictures->m_pPictureList->begin(); iter != m_pMyPictures->m_pPictureList->end(); iter++) { CMyPicture* pPic = (CMyPicture*)*iter; m_pView[index] = CreatePicture(pPic, index); index++; }
}MainWindow::~MainWindow(){ delete m_pMyPictures;}void MainWindow::CreateActions(){ m_pExitAct = new QAction( trUtf8("退出调度员工作站"), trUtf8("退出(&X)"), CTRL+Key_X, this, "exit");
connect(m_pExitAct, SIGNAL(activated()), qApp, SLOT(closeAllWindows()));
m_pCascadeAct = new QAction( "Cascade", "&Cascade", 0 , this, "cascade"); connect(m_pCascadeAct, SIGNAL(activated()), m_pWorkspace, SLOT(cascade())); m_pTileAct = new QAction( "Tile", "&Tile", 0, this, "tile"); connect(m_pTileAct, SIGNAL(activated()), m_pWorkspace, SLOT(tile())); m_pTileHorizontalAct = new QAction( "Tile Horizontal", "Tile &Horizontal", 0, this, "tileHorizontal");
connect(m_pTileHorizontalAct, SIGNAL(activated()), this, SLOT(OnTileHorizontal())); m_pAboutAct = new QAction( trUtf8("关于调度员工作站"),trUtf8("关于(&A)"), CTRL+Key_H,this,"help");
connect(m_pAboutAct, SIGNAL(activated()), this, SLOT(About())); }void MainWindow::CreateMenus(){ m_pPicMenu = new QPopupMenu(this); menuBar()->insertItem( trUtf8("画面(&P)"), m_pPicMenu); m_pPicMenu->insertSeparator();
m_pExitAct->addTo(m_pPicMenu);
m_pWindowMenu = new QPopupMenu(this); menuBar()->insertItem( trUtf8("窗口(&W)"), m_pWindowMenu); m_pTileAct->addTo(m_pWindowMenu); m_pTileHorizontalAct->addTo(m_pWindowMenu); m_pCascadeAct->addTo(m_pWindowMenu); m_pHelpMenu = new QPopupMenu(this);
menuBar()->insertItem( trUtf8("帮助(&H)"), m_pHelpMenu);
m_pAboutAct->addTo(m_pHelpMenu);
}void MainWindow::InsertPictureNameToMenu(QString picName, int index){ m_pPicMenu->insertItem( picName, this, SLOT(ClickMenuOnPictureName(int)), 0 ,index,index);}void MainWindow::ClickMenuOnPictureName(int id){ qDebug("id = %d\n",id); CMyPicture* pPic = m_pMyPictures->GetMyPicture(id); if( pPic != 0) { printf("PicID = %s\n", pPic->m_PicProperty.PicID.c_str()); } if(m_pView[id]->isHidden()) m_pView[id]->show(); else m_pView[id]->setFocus();}MdiChild* MainWindow::CreatePicture(CMyPicture* pPic, int index){ QTextCodec* gbk_codec = QTextCodec::codecForName("GBK"); QString gbk_string = gbk_codec->toUnicode(pPic->m_PicProperty.GraphName.c_str()); InsertPictureNameToMenu(gbk_string, index); MdiChild* mdiWindos = new MdiChild(pPic, m_pWorkspace, 0, WDestructiveClose); mdiWindos->setCaption(gbk_string); mdiWindos->hide(); pPic->m_id = index; return mdiWindos; }void MainWindow::CreateToolBars(){ }void MainWindow::CreateStatusBar(){ //statusBar()->showMessage(tr("OK"));}void MainWindow::About()
{
QMessageBox::about(this, trUtf8("关于OGW"),
trUtf8("公司:CDGM 软件名:OGW"));
}MdiChild *MainWindow::ActiveMdiChild()
{
return (MdiChild *)(m_pWorkspace->activeWindow());
}void MainWindow::OnTileHorizontal(){ // primitive horizontal tiling QWidgetList windows = m_pWorkspace->windowList(); if ( !windows.count() ) return; int heightForEach = m_pWorkspace->height() / windows.count(); int y = 0; for ( int i = 0; i < int(windows.count()); ++i ) { QWidget *window = windows.at(i); if ( window->testWState( WState_Maximized ) ) { // prevent flicker window->hide(); window->showNormal(); } int preferredHeight = window->minimumHeight()+window->parentWidget()->baseSize().height(); int actHeight = QMAX(heightForEach, preferredHeight); window->parentWidget()->setGeometry( 0, y, m_pWorkspace->width(), actHeight ); y += actHeight; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -