当前位置: 首页 > news >正文

QT5:在窗口右上角显示图标

目录

一、环境与目标

二、实现逻辑(纯代码)与效果

三、参考代码

四、总结


一、环境与目标

qt版本:5.12.7

windows 11 下的 Qt Designer (已搭建)

目标:使用嵌套布局的方式将两个按钮显示在窗口右上角,使两个按钮直接无间距且与窗口右边距为零。


二、实现逻辑(纯代码)与效果

1.创建新工程并在主窗口创建中心部件

2.在中心部件运用垂直布局

3.对两个按钮使用水平布局并通过拉伸项将按钮推到最右侧,同时设置按钮间距及布局边距。

4.将水平布局加入到垂直布局中并设置为右对齐

5.在垂直布局添加完水平布局后再添加拉伸项使按钮被置于顶部

6.模拟效果如下:


三、参考代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QDebug>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QWidget *btn_ctl_Widget;QPushButton *set_btn;QPushButton *wifi_btn;QHBoxLayout *btn_hlayout; //水平布局QVBoxLayout *btn_vlayout; //垂直布局};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置窗口大小resize(800, 1280); // 宽度为800像素,高度为1280像素btn_ctl_Widget = new QWidget(this); // 创建中心部件this->setCentralWidget(btn_ctl_Widget); // 设置为中心部件// 创建垂直布局btn_vlayout = new QVBoxLayout(btn_ctl_Widget);//创建按钮,并设置按钮样式set_btn=new QPushButton("set");set_btn->setFixedSize(50, 50);wifi_btn=new QPushButton("wifi");wifi_btn->setFixedSize(50, 50);// 创建水平布局并将按钮添加到其中btn_hlayout = new QHBoxLayout();// 在按钮之前添加一个拉伸项,这样按钮就会被推到布局的右侧btn_hlayout->addStretch(1);btn_hlayout->addWidget(set_btn);btn_hlayout->addWidget(wifi_btn);// 设置水平布局内按钮之间的间距为0btn_hlayout->setSpacing(0);btn_hlayout->setContentsMargins(0, 0, 0, 0); // 设置布局边距为0// 在垂直布局的末尾添加拉伸因子,并将水平布局添加到垂直布局中btn_vlayout->addLayout(btn_hlayout,Qt::AlignRight); // 将水平布局设置为右对齐btn_vlayout->addStretch(1); // 添加拉伸因子,使按钮位于顶部}MainWindow::~MainWindow()
{delete ui;
}


四、总结

学习与使用qt的布局功能,在边学边用的过程中简单的做个记录,防止自己忘记。

相关文章:

  • 天猫商品列表数据接口(Tmall.item_search)
  • VSCode中常用的快捷键
  • Opencv学习项目6——pyzbar
  • Linux 静态库和动态库
  • 思考如何学习一门编程语言?
  • 实习总结 --- 内部平台使用
  • 【聊聊原子性,中断,以及nodejs中的具体示例】
  • 通过MATLAB控制TI毫米波雷达的工作状态
  • react18.x+播放文本内容
  • Appium adb 获取appActivity
  • Laravel swagger接口文档生成和管理
  • 数据结构与算法—空间复杂度详解与示例(C#,C++)
  • 【力扣 - 每日一题】3115. 质数的最大距离(一次遍历、头尾遍历、空间换时间、埃式筛、欧拉筛、打表)Golang实现
  • Halcon机器视觉定位--模板匹配
  • Android启动时间分析
  • 3.7、@ResponseBody 和 @RestController
  • angular学习第一篇-----环境搭建
  • ES6简单总结(搭配简单的讲解和小案例)
  • javascript 哈希表
  • MaxCompute访问TableStore(OTS) 数据
  • Redis中的lru算法实现
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • windows下如何用phpstorm同步测试服务器
  • 二维平面内的碰撞检测【一】
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 利用DataURL技术在网页上显示图片
  • 七牛云假注销小指南
  • 前端之Sass/Scss实战笔记
  • 如何选择开源的机器学习框架?
  • 什么是Javascript函数节流?
  • 小程序01:wepy框架整合iview webapp UI
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​卜东波研究员:高观点下的少儿计算思维
  • (20050108)又读《平凡的世界》
  • (7)摄像机和云台
  • (pojstep1.3.1)1017(构造法模拟)
  • (rabbitmq的高级特性)消息可靠性
  • (二)正点原子I.MX6ULL u-boot移植
  • (分布式缓存)Redis哨兵
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (七)Knockout 创建自定义绑定
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (数据结构)顺序表的定义
  • .Net core 6.0 升8.0
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 流——流的类型体系简单介绍
  • .net 无限分类
  • .NET/C# 使窗口永不获得焦点
  • .NET面试题(二)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [1525]字符统计2 (哈希)SDUT