QT::标题栏/目录/托盘/工具条/状态栏
菜单栏QMenuBar:由QAction动作组成,一个窗口只能有一个菜单栏,位于窗口的顶部。
工具栏ToolBar:用于显示菜单项目,可以插入其他窗口部件,可以移动,一个主窗口可以有多个工具栏。
中心部件Central Widget:在主窗口的中心放入一个中心部件,应用程序的主要实现区域,一个窗口只能有一个中心部件。
停靠窗口 Dock Widget:停靠中心文件的四周,如工具箱、一个窗口可以有多个Dock部件。
状态栏QStatusBar:显示程序的状态信息,在主窗口最底部。
菜单 QMenu *menu = ui->menuBar->addMenu(tr("&Etid"));//创建主目录 QAction *action = menu->addAction(QIcon("../"),tr("open file(&o"));//主目录添加下啦目录。 action->setShortcut(QKeySequence("Ctrl+O")); menu->addSeparator();//添加间隔器。
QMenu、QToolBar控件 newAct = new QAction(QIcon( ":/images/new" ), tr( "新建" ), this ); newAct->setShortcut(tr("Ctrl+N" )); newAct->setStatusTip(tr("新建文件" )); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); cutAct = new QAction(QIcon( ":/images/cut" ), tr( "剪切" ), this ); cutAct->setShortcut(tr("Ctrl+X" )); cutAct->setStatusTip(tr("剪切内容" ));
//菜单 fileMenu = menuBar()->addMenu(tr( "文件" )); fileMenu->addAction(newAct); fileMenu->addSeparator(); editMenu = menuBar()->addMenu(tr("编辑" )); editMenu->addAction(cutAct); menuBar()->addSeparator();
工具栏1 ui->mainToolBar->addAction(action);//工具栏中添加菜单功能。 //动作组 //组中只能有一个被选择,对互斥型动作很有用。 //动作组 QActionGroup *group = new QActionGroup(this); QAction *action_L = group->addAction(tr("左对齐(L)")); action_L->setCheckable(true); QAction *action_r = group->addAction(tr("左对齐(r)")); action_r->setCheckable(true); QAction *action_m = group->addAction(tr("左对齐(m)")); action_m->setCheckable(true); action_L->setChecked(true); menu->addSeparator();//添加间隔器。 menu->addAction(action_L); menu->addAction(action_r); menu->addAction(action_m); 工具栏2 QMenu *colormenu = new QMenu; colormenu->addAction(tr("red")); colormenu->addAction(tr("green")); //工具栏添加目录菜单 QToolButton *toolbutton = new QToolButton(this); toolbutton->setText(tr("颜色")); toolbutton->setMenu(colormenu); //菜单弹出方式 toolbutton->setPopupMode(QToolButton::MenuButtonPopup); ui->mainToolBar->addWidget(toolbutton); QSpinBox *sbox = new QSpinBox; ui->mainToolBar->addWidget(sbox);
任务栏托盘菜单 //绘制菜单 void MainWindow::createMenu() { restoreWinAction = new QAction("恢复(&R)",this); quitAction = new QAction("退出(&Q)",this); //恢复 connect(restoreWinAction,SIGNAL(triggered()),this,SLOT(showNormal())); //退出 connect(quitAction,SIGNAL(triggered()),qApp,SLOT(quit())); myMenu = new QMenu((QWidget*)QApplication::desktop()); //添加菜单 myMenu->addAction(restoreWinAction); //分隔符 myMenu->addSeparator(); myMenu->addAction(quitAction); } //恢复 void MainWindow::showNormal() { this->show(); } //点击最小化按钮隐藏界面 void QWidget:: changeEvent(QEvent *e) { if((e->type()==QEvent::WindowStateChange)&&this->isMinimized()) { this->hide(); } }
//判断系统是否支持托盘图标 if(!QSystemTrayIcon::isSystemTrayAvailable()) { return; } QSystemTrayIcon myTrayIcon = new QSystemTrayIcon(this); //设置图标 myTrayIcon->setIcon(QIcon(":/new/prefix1/ico")); //鼠标放托盘图标上提示信息 myTrayIcon->setToolTip("Qt托盘图标功能"); //设置消息 myTrayIcon->showMessage("托盘","托盘管理",QSystemTrayIcon::Information,10000); //托盘菜单 myTrayIcon->setContextMenu(myMenu); //显示 myTrayIcon->show();
QStatusBar:状态栏 状态信息分为三类: 1、临时信息 showMessage(); 2、正常信息 addWidget添加一个QLable到状态栏显示 3、永久信息 addPermanentWidget ui->statusBar->showMessage(tr("欢迎使用多文档编辑器"),2000); QLabel *lable = new QLabel(this); lable->setFrameStyle(QFrame::Box|QFrame::Sunken); lable->setText("www.lianlei.com");
自定义工具栏:
新建一个类,继承QWidgetAction;重新实现CreatWindow()函数。