QT:QT窗口(一)

文章目录

菜单栏

创建菜单栏

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMenuBar* menubar = new QMenuBar(this);

    this->setMenuBar(menubar);
}

MainWindow::~MainWindow()
{
    delete ui;
}

在菜单栏中添加菜单

创建菜单:

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMenuBar* menubar = new QMenuBar(this);

    this->setMenuBar(menubar);

    // 创建菜单
    QMenu* menu1 = new QMenu("菜单");
    QMenu* menu2 = new QMenu("编辑");
    QMenu* menu3 = new QMenu("构建");

    // 再把菜单设置进去
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);
    menubar->addMenu(menu3);
}

MainWindow::~MainWindow()
{
    delete ui;
}

创建菜单项

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMenuBar* menubar = new QMenuBar(this);

    this->setMenuBar(menubar);

    // 创建菜单
    QMenu* menu1 = new QMenu("菜单");
    QMenu* menu2 = new QMenu("编辑");
    QMenu* menu3 = new QMenu("构建");

    // 再把菜单设置进去
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);
    menubar->addMenu(menu3);

    // 创建菜单项
    QAction* act1 = new QAction("open");
    QAction* act2 = new QAction("close");
    QAction* act3 = new QAction("create");

    // 把菜单项设置进去
    menu1->addAction(act1);
    menu1->addAction(act2);
    menu1->addAction(act3);
}

MainWindow::~MainWindow()
{
    delete ui;
}

添加分割线

可以使用addSeparator来添加分割线:

工具栏

创建工具栏

调用addToolBar函数来创建工具栏:

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QToolBar* toolbar1 = new QToolBar(this);
    QToolBar* toolbar2 = new QToolBar(this);
    this->addToolBar(toolbar1);
    this->addToolBar(toolbar2);

}

MainWindow::~MainWindow()
{
    delete ui;

}

设置停靠位置

工具栏停靠位置的设置有两种方式,一种是在创建的时候选择停靠位置,一种是使用setAllowedAreas函数来设置

创建工具栏的同时指定停靠位置

在创建工具栏的同时,就可以设置工具栏的停靠位置,对于这个来说默认的位置是在窗口的最上面,也可以自己来设置:

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    // 创建工具栏
    QToolBar* toolbar1 = new QToolBar(this);
    QToolBar* toolbar2 = new QToolBar(this);
    
    // 设置一下位置
    this->addToolBar(Qt::LeftToolBarArea, toolbar1);
    this->addToolBar(Qt::RightToolBarArea, toolbar2);

}

MainWindow::~MainWindow()
{
    delete ui;

}

使用QToolBar类提供的setAllowedAreas函数来设置停靠位置

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 创建工具栏
    QToolBar* toolbar1 = new QToolBar(this);
    QToolBar* toolbar2 = new QToolBar(this);

    // 设置一下位置
    this->addToolBar(toolbar1);
    this->addToolBar(toolbar2);
    
    // 只允许在左侧停靠
    toolbar1->setAllowedAreas(Qt::LeftToolBarArea);
    // 只允许在右侧停靠
    toolbar2->setAllowedAreas(Qt::RightToolBarArea);

}

MainWindow::~MainWindow()
{
    delete ui;

}

设置浮动属性

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 创建工具栏
    QToolBar* toolbar1 = new QToolBar(this);
    QToolBar* toolbar2 = new QToolBar(this);

    // 设置一下位置
    this->addToolBar(toolbar1);
    this->addToolBar(toolbar2);

    // 只允许在左侧停靠
    toolbar1->setAllowedAreas(Qt::LeftToolBarArea);
    // 只允许在右侧停靠
    toolbar2->setAllowedAreas(Qt::RightToolBarArea);

    // 允许和不允许工具栏浮动
    toolbar1->setFloatable(true);
    toolbar2->setFloatable(false);

}

MainWindow::~MainWindow()
{
    delete ui;

}

设置移动属性

移动属性如果设置为false,表示的是停靠位置的操作就不会生效,可以理解为是一个总开关

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 创建工具栏
    QToolBar* toolbar1 = new QToolBar(this);
    QToolBar* toolbar2 = new QToolBar(this);

    // 设置一下位置
    this->addToolBar(toolbar1);
    this->addToolBar(toolbar2);

    // 只允许在左侧停靠
    toolbar1->setAllowedAreas(Qt::LeftToolBarArea);
    // 只允许在右侧停靠
    toolbar2->setAllowedAreas(Qt::RightToolBarArea);

    // 允许和不允许移动
    toolbar1->setMovable(true);
    toolbar2->setMovable(false);

}

MainWindow::~MainWindow()
{
    delete ui;

}

状态栏

状态栏是输出简要消息的区域,一般用于主窗口的底部,一个窗口中最多只能有一个状态栏

可以显示有实时消息,永久消息,进度消息等

状态栏的创建

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 创建状态栏
    QStatusBar* stbar = statusBar();
    // 把状态栏放到窗口中
    setStatusBar(stbar);
}

MainWindow::~MainWindow()
{
    delete ui;
}

在状态栏中显示实时消息

可以使用showMessage来实现

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 创建状态栏
    QStatusBar* stbar = statusBar();
    // 把状态栏放到窗口中
    setStatusBar(stbar);

    // 在状态栏中显示2s的消息
    stbar->showMessage("Hello_Qt", 2000);
}

MainWindow::~MainWindow()
{
    delete ui;
}

在状态栏中显示永久消息

简单的设计方案是,把消息用标签来提示

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QLabel>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 创建状态栏
    QStatusBar* stbar = statusBar();
    // 把状态栏放到窗口中
    setStatusBar(stbar);

    // 创建标签
    QLabel* label = new QLabel("这是提示消息", this);
    stbar->addWidget(label);
}

MainWindow::~MainWindow()
{
    delete ui;
}

也可以放到右侧

相关推荐
学习,学习,在学习12 天前
Modbus TCP同步通信方式实现异步级效率
网络·c++·qt·网络协议·tcp/ip·qt5
学习,学习,在学习13 天前
Modbus TCP 协议深度解析与 Qt 实战指南
网络·c++·qt·tcp/ip·modbus·qt5
Shadow(⊙o⊙)16 天前
Qt-Lambda捕获使用+阶段性综合使用
开发语言·c++·qt·qt5
学习,学习,在学习19 天前
Qt 串口通讯架构
开发语言·c++·qt·架构·qt5
学习,学习,在学习1 个月前
Q工控仪器程序框架设计详解(工控)
c++·qt·架构·qt5
IOT那些事儿1 个月前
Qt5 VSCode调试
c++·vscode·mingw·qt5
IOT那些事儿1 个月前
Windows PowerShell配置Qt5编译运行环境
windows·powershell·qt5
屯子来了3 个月前
window11 qt5.14.1 msvc2017 编译OpenDDS-3.33.0
c++·qt5·opendds·msvc2017
艾莉丝努力练剑3 个月前
【QT】常用控件(一):初识控件,熟悉QWidget
android·linux·数据库·qt·学习·mysql·qt5
艾莉丝努力练剑4 个月前
【QT】信号与槽
linux·开发语言·c++·人工智能·windows·qt·qt5