菜单栏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()函数。