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

 

posted @ 2021-01-28 23:00  osbreak  阅读(419)  评论(0编辑  收藏  举报