qfedu-qt-level/qtdemo02/mainwindow.cpp

112 lines
3.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "mainwindow.h"
#include <cstdio>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 设置窗口的标题
setWindowTitle("正在学习QMainWindow");
resize(1200,960);
// 创建菜单栏QMenuBarQMenuQAction
QMenuBar *menu_bar = menuBar();
this->setMenuBar(menu_bar); // 设置当前窗口的菜单栏
// 创建图片空间
QPixmap pix_map;
pix_map.load(":icon/start");
// 创建菜单
QMenu *menu1 = new QMenu("文件",this);
// 创建菜单项
QAction *openAction = menu1->addAction("打开...");
QMenu *sub_menu = new QMenu("最近使用",this); // 子菜单
sub_menu->addAction("d:\\a.txt");
// 添加子菜单(菜单项也可以是一个菜单,即为子菜单)
menu1->addMenu(sub_menu);
QAction *newAction = menu1->addAction("新建...");
menu1->addSeparator();
newAction->setIcon(QIcon(pix_map));
QAction *exitAction = menu1->addAction("退出");
menu_bar->addMenu(menu1);
exitAction->setIcon(QIcon(":icon/stop"));
QMenu *menu2 = new QMenu("编辑",this);
QAction *editAction = menu2->addAction("复制");
menu2->addAction("剪切");
menu2->addAction("粘贴");
menu_bar->addMenu(menu2);
// 菜单项的快捷方式
openAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_O));
newAction->setShortcut(QKeySequence(tr("ctrl+n")));
exitAction->setShortcut(QKeySequence(tr("ctrl+q")));
// 初始化子控件
mEdit = new QTextEdit(this);
mEdit->hide();
mWidget1 = new Widget1;
connect(openAction,&QAction::triggered,[=](){
takeCentralWidget(); // 将当前中心空间从主窗口移除
qDebug()<<"正在打开文件...";
setCentralWidget(mEdit);
mEdit->show();
});
connect(newAction,&QAction::triggered,[=](){
takeCentralWidget();
qDebug()<<"正在新建文件...";
setCentralWidget(mWidget1);
});
connect(exitAction,&QAction::triggered,this,&QMainWindow::close);
// 工具栏
QToolBar *tool_bar = new QToolBar;
tool_bar->setParent(this);
tool_bar->addAction(openAction);
tool_bar->addAction(newAction);
tool_bar->addSeparator();
tool_bar->addAction(exitAction);
tool_bar->setMovable(false); // 禁止拖动
tool_bar->setFloatable(false); // 禁止浮动
tool_bar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
this->addToolBar(tool_bar);
// this->addToolBar(Qt::LeftToolBarArea,tool_bar);
// 创建状态栏
QStatusBar *status_bar = new QStatusBar(this);
setStatusBar(status_bar);
QLabel *label1 = new QLabel("状态: 1",this);
status_bar->addWidget(label1); // 从左向右添加
QLabel *label2 = new QLabel("状态: 2",this);
// label2->setFixedSize(200,40);
// label2->setStyleSheet("background-color: #cf0f13; padding-left: 100px;");
status_bar-> addPermanentWidget(label2); // 从右向左添加
status_bar->addWidget(new QLabel("状态 3: 0",this),1); // 1 是平铺剩余空间
// 创建铆接控件
QDockWidget *dock = new QDockWidget("铆接1",this);
dock->addAction(openAction);
dock->addAction(exitAction);
dock->setWidget(new Widget1(this));
QDockWidget *dock2 = new QDockWidget("铆接2",this);
dock2->setWidget(new QPushButton("点我试试",this));
addDockWidget(Qt::TopDockWidgetArea,dock);
addDockWidget(Qt::TopDockWidgetArea,dock2);
// 中心部件
}
MainWindow::~MainWindow()
{
}