基本框架组成
1.功能块action
2.菜单menu
3.工具栏toolbar
4.中央部件center
5.状态栏 status bar
代码展示
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAction>//功能块
#include <QTextEdit>
#include <QFileDialog>//打开文件要用到文件对话框这个头文件
#include <QColorDialog>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void openf()
{
QString filename = QFileDialog::getOpenFileName();//用QFileDialog头文件里面的getOpenFileName()函数得到的值赋给filename变量
te->setText(filename);//让filename字符串在te上显示出来
//由于槽函数要用到textedit的变量特,所以头文件QTextEdit和变量的声明QTextEdit *te;只能写在.h文件里,不然te会检测不到
}
void copyf()
{
te->copy();
}
void pastf()
{
te->paste();
}
void setcl()
{
QColor c = QColorDialog::getColor();
te->setTextColor(c);
}
private:
QAction *openfileact;//声明各个功能块变量
QAction *copyfileact;
QAction *pastfileact;
QAction *setcoloract;
QTextEdit *te;
};
#endif // MAINWINDOW_H
mainwindow.c
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//create action
openfileact = new QAction(QIcon("open.png"),"open");//把各个功能块创建出来,QIcon是创建图片,你只需要告诉它图片的名字,图片要放在影子目录下,后面字符串是该功能块的名字
copyfileact = new QAction(QIcon("copy.jpg"),"copy");
pastfileact = new QAction(QIcon("past.webp"),"past");
setcoloract = new QAction(QIcon("setcolor.png"),"setcolor");
//create menu
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));//创建完功能块,创建菜单,往菜单里面装菜单名字file
fileMenu->addAction(openfileact);//往菜单里面装功能块
QMenu *editMenu = menuBar()->addMenu(tr("&edit"));//往菜单里面装菜单名字edit
editMenu->addAction(copyfileact);//往菜单里面装功能块
editMenu->addAction(pastfileact);
QMenu *setMenu = menuBar()->addMenu(tr("&set"));
setMenu->addAction(setcoloract);
//create tool
QToolBar *tfile = addToolBar("aaa");//往工具栏tfile里面加名字aaa
tfile->addAction(openfileact);//往工具栏tfile里面加功能块
QToolBar *tedit = addToolBar("bbb");
tedit->addAction(copyfileact);
tedit->addAction(pastfileact);
QToolBar *tset = addToolBar("ccc");
tset->addAction(setcoloract);
//create center
te = new QTextEdit;
te->setMinimumSize(640,480);//设置文本编辑框的最小尺寸
setCentralWidget(te);//把文本编辑框设置为中央部件,在widget上显示出来
//create status bar
QLabel *slb = new QLabel("hhh");
QStatusBar *stb = statusBar();//创建状态栏:用statusbar函数把一些值赋给stb,让其成为状态栏(注:用new QStatusBar没有状态栏)
stb->addWidget(slb);//往状态栏stb里面贴标签slb
connect(openfileact,SIGNAL(triggered(bool)),this,SLOT(openf()));//连接功能模块与槽函数,当点击功能模块时,会进入槽函数,执行命令去实现该功能
connect(copyfileact,SIGNAL(triggered(bool)),this,SLOT(copyf()));
connect(pastfileact,SIGNAL(triggered(bool)),this,SLOT(pastf()));
connect(setcoloract,SIGNAL(triggered(bool)),this,SLOT(setcl()));
}
MainWindow::~MainWindow()
{
}