Qt学习笔记(2) QMenu QToolBar ContextMenu QStatusBar

来源:互联网 发布:安卓数据精灵 编辑:程序博客网 时间:2024/05/01 12:15

Qt中使用“动作”的概念来简化菜单和工具栏的编程,一个动作,即QAction,就是一个可以添加到任意数量的菜单和工具栏上的项。

Qt中使用图片,常用的方法是使用资源机制:创建资源文件,将资源添加进来,引用方法是 ” :+前缀+路径名 “,如 :/images/new.png


创建菜单,工具栏最快的方式就是使用 Qt Designer.以下是代码示例:


1. 创建QAction

void MainWindow::createAction(){    newFileAction = new QAction(tr("&New"),this);    newFileAction->setIcon(QIcon(":/images/new.png")); //图标    newFileAction->setShortcut(QKeySequence::New); //快捷键   使用Qt提供的枚举值    newFileAction->setStatusTip(tr("Create a new File")); //状态栏提示    connect(newFileAction,SIGNAL(triggered()),this,SLOT(newFile())); //信号-槽   ......    aboutAction = new QAction(tr("&About"),this);    aboutAction->setIcon(QIcon(":/images/about.png")); //图标    aboutAction->setShortcut(QKeySequence(tr("Ctrl+H"))); //快捷键  自定义快捷键    aboutAction->setStatusTip(tr("About")); //状态栏提示}

2.创建QMenu


void MainWindow::createMenu(){    fileMenu = menuBar()->addMenu(tr("&File"));    fileMenu->addAction(newFileAction);    fileMenu->addAction(openFileAction);    fileMenu->addAction(saveAction);    editMenu = menuBar()->addMenu(tr("&Edit"));    editMenu->addAction(cutAction);    editMenu->addAction(copyAction);    editMenu->addAction(pasteAction);    helpMenu = menuBar()->addMenu(tr("&Help"));    helpMenu->addAction(aboutAction);}

3.创建QToolBar

void MainWindow::createToolbars(){    fileToolBar = addToolBar(tr("&File"));    fileToolBar->addAction(newFileAction);    fileToolBar->addAction(openFileAction);    fileToolBar->addAction(saveAction);    editToolBar = addToolBar(tr("&Edit"));    editToolBar->addAction(cutAction);    editToolBar->addAction(copyAction);    editToolBar->addAction(pasteAction);    editToolBar->addSeparator();  //分隔栏    editToolBar->addWidget(lineEdit); //将控件作为工具栏的项}

4.创建ContextMenu 鼠标右击菜单

void MainWindow::createContextMenu(){    textEdit->addAction(cutAction);    textEdit->addAction(copyAction);    textEdit->addAction(pasteAction);    textEdit->setContextMenuPolicy(Qt::ActionsContextMenu);}

Qt中的QLineEdit本身就有常用的右击菜单功能,上面的代码是一个实例


5. 创建StatusBar

void MainWindow::createStatusBar(){    statusLineEdit->setFixedSize(statusLineEdit->sizeHint());    statusBar()->addWidget(statusLineEdit);}


运行结果:

 





原创粉丝点击