Qt 用代码实现菜单栏(MenuBar)和工具栏(ToolBar)
2023-09-14 09:07:11 时间
新建Qt项目,选择Qt Widgets Application,填入项目名称“ImageView”,点击完成。
在Qt Designer里会生成如图所示的几个文件:
此时我们右键删除imageviewer.ui这个文件,因为我们本次是用纯代码的方式生成界面,所以不需要这个ui文件了。
关键代码主要在imageviewer.h和imageviewer.cpp里。下面是代码:
imageviewer.h
#ifndef IMAGEVIEWER_H
#define IMAGEVIEWER_H
#include <QMainWindow>
#include <QLabel>
#include <QScrollArea>
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
namespace Ui {
class ImageViewer;
}
class ImageViewer : public QMainWindow
{
Q_OBJECT
public:
explicit ImageViewer(QWidget *parent = nullptr);
~ImageViewer();
void initMenu();
void initToolBar();
void initConnect();
private:
Ui::ImageViewer *ui;
QLabel *imageLabel;
QScrollArea *scrollAera;
QMenu *fileMenu;
QMenu *viewMenu;
QMenu *helpMenu;
QToolBar *fileToolBar;
QAction *openAct;
QAction *printAct;
QAction *exitAct;
QAction *zoomInAct;
QAction *zoomOutAct;
QAction *normalSizeAct;
QAction *fitToWindowAct;
QAction *aboutAct;
QAction *aboutQtAct;
private slots:
void open();
void print();
void exit();
void zoomIn();
void zoomOut();
void normalSize();
void fitToWindow();
void about();
void aboutQt();
};
#endif // IMAGEVIEWER_H
imageviewer.cpp
#include "imageviewer.h"
#include "ui_imageviewer.h"
ImageViewer::ImageViewer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ImageViewer)
{
ui->setupUi(this);
//initalize
initMenu();
initToolBar();
initConnect();
}
ImageViewer::~ImageViewer()
{
delete ui;
}
void ImageViewer::initMenu()
{
//QMenuBar *menuBar = this->menuBar();
//add three menus
fileMenu = new QMenu(tr("&File"),this);
viewMenu = new QMenu(tr("&View"),this);
helpMenu = new QMenu(tr("&About"),this);
//add actions and add it into corresponding menu
openAct = new QAction(tr("&Open"),this);
openAct -> setShortcut(tr("ctrl+O"));
printAct = new QAction(tr("&Print"),this);
printAct -> setShortcut(tr("ctrl+P"));
exitAct = new QAction(tr("&Exit"),this);
exitAct -> setShortcut(tr("ctrl+Q"));
fileMenu -> addAction(openAct);
fileMenu -> addAction(printAct);
fileMenu -> addSeparator();
fileMenu -> addAction(exitAct);
zoomInAct = new QAction(tr("Zoom &In"),this);
zoomInAct -> setShortcut(tr("ctrl+="));
zoomOutAct = new QAction(tr("Zoom &Out"),this);
zoomOutAct -> setShortcut(tr("ctrl+-"));
normalSizeAct = new QAction(tr("&Normal Size"),this);
normalSizeAct -> setShortcut(tr("ctrl+S"));
fitToWindowAct = new QAction(tr("&Fit to Window"),this);
fitToWindowAct -> setShortcut(tr("ctrl+F"));
viewMenu -> addAction(zoomInAct);
viewMenu -> addAction(zoomOutAct);
viewMenu -> addAction(normalSizeAct);
viewMenu -> addSeparator();
viewMenu -> addAction(fitToWindowAct);
aboutAct = new QAction(tr("&About"),this);
aboutQtAct = new QAction(tr("&About Qt"),this);
helpMenu -> addAction(aboutAct);
helpMenu -> addAction(aboutQtAct);
//add menus to menubar
menuBar() -> addMenu(fileMenu);
menuBar() -> addMenu(viewMenu);
menuBar() -> addMenu(helpMenu);
}
void ImageViewer::initToolBar()
{
//add a toolbar and add its actions
fileToolBar = new QToolBar(this);
fileToolBar -> addAction(openAct);
fileToolBar -> addAction(printAct);
fileToolBar -> addAction(exitAct);
addToolBar(Qt::TopToolBarArea,fileToolBar);
}
void ImageViewer::initConnect()
{
//singals and slots
connect(openAct,SIGNAL(triggered),this,SLOT(open()));
connect(printAct,SIGNAL(triggered),this,SLOT(print()));
connect(exitAct,SIGNAL(triggered),this,SLOT(exit()));
connect(zoomInAct,SIGNAL(triggered),this,SLOT(zoomIn()));
connect(zoomOutAct,SIGNAL(triggered),this,SLOT(zoomOut()));
connect(normalSizeAct,SIGNAL(triggered),this,SLOT(normalSize()));
connect(fitToWindowAct,SIGNAL(triggered),this,SLOT(fitToWindow()));
connect(aboutAct,SIGNAL(triggered),this,SLOT(about()));
connect(aboutQtAct,SIGNAL(triggered),this,SLOT(aboutQt()));
}
//implement slot functions
void ImageViewer::open()
{
}
void ImageViewer::print()
{
}
void ImageViewer::exit()
{
}
void ImageViewer::zoomIn()
{
}
void ImageViewer::zoomOut()
{
}
void ImageViewer::normalSize()
{
}
void ImageViewer::fitToWindow()
{
}
void ImageViewer::about()
{
}
void ImageViewer::aboutQt()
{
}
界面效果如图:
相关文章
- 二、Qt定时器与文本编辑器制作《QT 入门到实战》
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- 编程在Linux下学习Qt界面编程(linux下qt界面)
- Qt定时器及实现(详解)
- Qt程序的字符编码方式
- Linux 环境下运用 Qt 编程的秘籍(linux下的qt编程)
- Linux 下 Qt 调试技巧(qt调试linux)
- Linux系统下Qt窗口程序的最小化实现(qtlinux最小化)
- Linux上Qt的快速安装(linux下载qt)
- 数据库使用Qt连接Oracle数据库:一步一步实现(qt连接oracle)
- 开发Linux下 Qt开发:从入门到精通.(linux下的qt)
- 「零基础入门」Linux下安装QT教程,助力程序员成为高手!(linux下安装qt教程)
- Qt for Linux:下载与安装指南(qt下载linux)
- Qt在Linux平台的优越性(qtlinux类)
- GUI应用Linux下Qt开发GUI应用:实现梦想的开发之路(linux下qt开发)
- QT快速加载MySQL驱动的简单操作(qt加载mysql驱动)
- 使用Qt实现MySQL数据库连接教程(qt连接mysql数据库)
- 界面让Linux拥有Qt完美图形界面的魅力(linux qt 图形)
- 「Linux Qt SDK开发新时代:简单快速轻松上手」(linux qt sdk)
- Redis与Qt实现完美连接(redis连接qt)
- Redis使用Qt解决读写互斥问题(redis读写互斥qt)