#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setWindowTitle("QMainWindow");
this->resize(800,500);
//创建菜单栏
// QMenuBar*mBar=new QMenuBar(this);//设置父对象,其一是显示菜单栏,其二是为了对象树销毁
//将菜单栏添加主窗口
//this->setMenuBar(mBar);
QMenuBar*mBar=menuBar();//等价上面两句,创建并返回menuBar
//定义菜单
QMenu*menu=new QMenu("菜单一",this);
QMenu*menu2=new QMenu("菜单二",this);
QMenu*menu3=new QMenu("菜单三",this);
QMenu*menu4=new QMenu("菜单四",this);
//菜单栏中添加菜单
mBar->addMenu(menu);
mBar->addMenu(menu2);
mBar->addMenu(menu3);
mBar->addMenu(menu4);
// QMenu*menu5=mBar->addMenu("菜单五");//等价于上面的两句,定义和添加
//菜单中添加菜单项
//定义菜单项
QAction *act=new QAction("菜单项一",this);
QAction *act1=new QAction("菜单项一一",this);
QAction*act2=new QAction("菜单项二",this);
QAction*act22=new QAction("菜单项二二",this);
//菜单添加菜单项
menu->addAction(act); menu->addAction(act1);
menu2->addAction(act2) ; menu2->addAction(act22);
QAction*act3=menu3->addAction("菜单项三");//等价于上面的两句
//菜单中增加分隔线
menu3->addSeparator();
QAction*act33=menu3->addAction("菜单项三三");//等价于上面的两句
给菜单项添加快捷键
act33->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_9));
//给菜单项增加槽函数
connect(act33,&QAction::triggered,
[=](){
qDebug()<<"hello";
// this->close();
}
);
/**************************************************/
//添加工具栏《菜单项的快捷方式》 工具栏可以存在多个
QToolBar*toolbar=addToolBar("工具栏");
//工具栏添加快捷键
toolbar->addAction(act);
toolbar->addAction(act3);
//工具栏添加控件 ,并给控件增加槽函数
toolbar->addWidget(new QPushButton ("hello",this));//匿名对象
QPushButton *btn2=new QPushButton("world",this);
toolbar->addWidget(btn2);
btn2->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_3));//增加快捷键
connect(btn2,&QPushButton::clicked,
[=](){
// this->hide();
qDebug()<<"hello world";
}
);
//设置工具栏不允许浮动
toolbar->setFloatable(false);
//设置工具栏的允许停靠的区域
toolbar->setAllowedAreas(Qt::LeftToolBarArea);//第一次默认位置是在顶部,移动之后只能停放在左边
//toolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//停放的位置关系可以是左边或右边
//增加工具栏的方式二
//QToolBar *tool=new QToolBar(this);
//this->addToolBar(tool);
/****************************/
//设置状态栏
QStatusBar*statusbar=statusBar();
//准备要增加到状态栏上的控件
QLabel*label=new QLabel (this);
label->setText("我是一个标签");
//给状态栏增加控件
statusbar->addWidget(label);//默认从左往右添加
//也可以使用匿名方式
statusbar->addWidget(new QLabel("我也是一个标签控件"));
//也可以向状态栏右边添加控件
statusbar->addPermanentWidget(new QLabel("我是一右标签控件"));
设置状态栏的方式二 状态栏也只能存在一个
//QStatusBar*statusBBar=new QStatusBar(this);
给窗口增加状态栏
//this->setStatusBar(statusBBar);
//statusBBar->addPermanentWidget(new QLabel("我也是一个右边的标签"));
/******************************************************/
//增加核心部件《中间区域》
//创建文本编辑器
QTextEdit*textEdit=new QTextEdit("文本编辑器",this);
//把文本编辑器放到中间区域
setCentralWidget(textEdit);
/******************/
//增加浮动窗口,(铆接部件)《这个是旁边区域》
QDockWidget*dockwidget=new QDockWidget("浮动窗口",this);
this->addDockWidget(Qt::LeftDockWidgetArea,dockwidget);//设置浮动窗口放置的位置
//也可以给这个浮动窗口里面增加文本编辑器控件
QTextEdit*textEdit2=new QTextEdit(this);
dockwidget->setWidget(textEdit2);
//我们也能设置这个控件允许停靠的位置《上下左右》
//使用 dockwidget->setAllowedAreas()
}
MainWindow::~MainWindow()
{
}
Qt基本部件的学习一
最新推荐文章于 2023-03-18 11:50:48 发布