#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFontComboBox>
#include <QLabel>
#include <QPushButton>
#include <QToolButton>
#include<QDateTime>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置窗口初始大小
this->resize(1300,900);
QMenuBar* menuBar= ui->menuBar;
QMenu *fileMenu=menuBar->addMenu("文件(F)");
QMenu * fileEditer=menuBar->addMenu("编辑(E)");
QMenu * fileBuild=menuBar->addMenu("构建(B)");
QMenu * fileHelp=menuBar->addMenu("帮助(H)");
//文件添加操作
QAction* NewAction=fileMenu->addAction(QIcon("://filenew.png"),"新建文件");
QAction* SaveAction=fileMenu->addAction(QIcon("://filesave.png"),"保存文件");
QAction* OpenAction=fileMenu->addAction(QIcon("://fileopen.png"),"打开文件");
QAction* PrintfAction=fileMenu->addAction(QIcon("://fileprint.png"),"打印");
//编辑添加操作
fileEditer->addAction(QIcon("://editredo.png"),"撤销");
fileEditer->addAction(QIcon("://editundo.png"),"反撤销");
QAction* cutAction=fileEditer->addAction(QIcon("://editcut.png"),"剪切");
QAction* copyAction=fileEditer->addAction(QIcon("://editcopy.png"),"复制");
QAction* pasteAction=fileEditer->addAction(QIcon("://editpaste.png"),"粘贴");
//构建添加操作
fileBuild->addAction(QIcon("://textbold.png"),"构建所有项目");
fileBuild->addAction(QIcon("://textcenter.png"),"执行项目");
fileBuild->addAction(QIcon("://textitalic.png"),"重新构建项目");
fileBuild->addAction(QIcon("://textjustify.png"),"清理所有项目");
//帮助添加操作
fileHelp->addAction(QIcon("://textleft.png"),"目录");
fileHelp->addAction(QIcon("://textright.png"),"索引");
fileHelp->addAction(QIcon("://textunder.png"),"报告Bug");
fileHelp->addAction(QIcon("://true-color.png"),"关于QT");
//工具栏 添加菜单栏的快捷方式
QToolBar* toolBar= ui->mainToolBar;
toolBar->addAction(NewAction);
toolBar->addAction(SaveAction);
toolBar->addAction(OpenAction);
toolBar->addAction(cutAction);
toolBar->addAction(copyAction);
toolBar->addAction(pasteAction);
//设置字体字号(alt+enter 添加头文件)
QLabel* fontTypeLab=new QLabel(" 字体:",this);
QLabel* fontSizeLab=new QLabel(" 字号:",this);
QFontComboBox *fontCombo=new QFontComboBox(this);//QFontComboBox是下拉控件
QComboBox* fontSizeCombo= new QComboBox(this);//QFontComboBox是QComboBox的子类,返回一个对象
//向工具栏添加控件“文字”,对象调用方法
toolBar->addWidget(fontTypeLab);
toolBar->addWidget(fontCombo);
toolBar->addWidget(fontSizeLab);
toolBar->addWidget(fontSizeCombo);
//设置字号的大小可选范围1-30
/*
注意:
1.参数类型int->QString
2.程序异常结束:死循环
空指针
*/
int i=1;
while(i<=30)
{
fontSizeCombo->addItem(QString::number(i));//参数类型int->QString,利用Qstring里面的静态函数,通过类名来调用
i++;
}
toolBar->addSeparator();
QPushButton* boldBtn=new QPushButton(this);//QPushButton的图标后面有白色背景,QToolButton是透明背景
boldBtn->setIcon(QIcon("://textbold.png"));//QIcon图标
QToolButton* italicBtn=new QToolButton(this);//创建斜体控件,返回斜体对象,
italicBtn->setIcon(QIcon("://textitalic.png"));
QToolButton* colorBtn=new QToolButton(this);//创建颜色控件,返回颜色对象,
colorBtn->setIcon(QIcon("://true-color.png"));
toolBar->addWidget(boldBtn);//使用toolBar,把加粗控件添加到工具栏
toolBar->addWidget(italicBtn);
toolBar->addWidget(colorBtn);
//状态栏的设置
QStatusBar* statusBar=ui->statusBar;
//显示静态的当前时间
timeLab=new QLabel("时间:",this);//QLabel* timeLab(局部遍变量,{}结束即释放)改为timeLab,这是类的成员变量
// QLabel* timeLab不能这么写,这是局部变量,setTime里面用到的timeLab和这个QLabel* timeLab不是一个,会使setTime里面的变成空指针因为它是类的成员变量
statusBar->addWidget(timeLab);
//获取当前时间
QString dateTime= QDateTime::currentDateTime().toString();
timeLab->setText("时间:"+dateTime);
//设置动态时间,使用信号和槽
//定时器:QTimer
QTimer*t=new QTimer();
t->start(1000);//1秒触发一次信号
connect(t,QTimer::timeout,this,MainWindow::setTime);//timeout时间到了,
}
void MainWindow::setTime()
{
//获取当前时间
QString dateTime= QDateTime::currentDateTime().toString();
timeLab->setText("时间:"+dateTime);
}
MainWindow::~MainWindow()
{
delete ui;
}
得到效果图如下所示: