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

QMainWindow使用QTabWidget添加多个QWidget

QTabWidget添加其它Wdiget的2个函数如下:

QTabWidget的介绍可参考官网QTabWidget Class | Qt Widgets | Qt 6.9.1

直接上代码,代码如下:

#include <QMainWindow>#include <QApplication>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QScreen>int nWidth = 800;
int nHeight = 600;// 移动窗口到屏幕中央
void MoveCenter(QMainWindow& w){// 获取屏幕信息QScreen *screen = QGuiApplication::primaryScreen();QRect screenGeometry = screen->geometry();int screenWidth = screenGeometry.width();int screenHeight = screenGeometry.height();// 计算窗口居中位置int x = (screenWidth - nWidth) / 2;int y = (screenHeight - nHeight) / 2;w.move(x, y);  
}int main(int argc, char *argv[])
{QApplication a(argc, argv);QMainWindow w;w.setGeometry(0,0,nWidth,nHeight);MoveCenter(w);// 设置中央控件QTabWidget *centralWidget = new QTabWidget(&w);w.setCentralWidget(centralWidget);//////////////////// widget1 //////////////////////////////QWidget *widget1 = new QWidget();QVBoxLayout *mainlayout1 = new QVBoxLayout(widget1);// 子水平布局(用于 Button 1 和 Button 2 水平排列)QHBoxLayout *buttonLayout1 = new QHBoxLayout();buttonLayout1->addWidget(new QPushButton("Button 1"));buttonLayout1->addWidget(new QPushButton("Button 2"));// 添加按钮布局到主布局mainlayout1->addLayout(buttonLayout1); //index =0// 设置拉伸因子,使 QLineEdit 占据剩余空间QLineEdit *lineEdit = new QLineEdit();lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);mainlayout1->addWidget(lineEdit); //index =1mainlayout1->setStretch(0, 0);  // 按钮布局不拉伸mainlayout1->setStretch(1, 1);  // QLineEdit 拉伸填充剩余空间//////////////////// widget2 //////////////////////////////QWidget *widget2 = new QWidget();// 主垂直布局(用于上下排列按钮和输入框)QVBoxLayout *mainlayout2 = new QVBoxLayout(widget2);// 子水平布局(用于 Button 1 和 Button 2 水平排列)QHBoxLayout *buttonLayout2 = new QHBoxLayout();buttonLayout2->addWidget(new QPushButton("Button 1"));buttonLayout2->addWidget(new QPushButton("Button 2"));// 添加按钮布局到主布局mainlayout2->addLayout(buttonLayout2);// 添加 QLineEdit 到主布局(默认在按钮下方)QLineEdit *lineEdit2 = new QLineEdit();mainlayout2->addWidget(lineEdit2);//使用弹簧填充剩余距离mainlayout2->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));//////////////////////// 添加tabWdiget ///////////////centralWidget->addTab(widget1,"1");centralWidget->addTab(widget2,"2");w.show();return a.exec();
}

上面的代码运行结果如下:

网上其它的资料可参考:QT界面:tabWidget选项卡使用小结_qt怎么将ui界面放入到tabwidget-CSDN博客

QTabWidget——创建标签页的多页面切换_qt tabwidget 标签切换 信号-CSDN博客

附加:

1、QDataStream 类实现了 C++ 基本数据类型的序列化,可参考官网

QDataStream Class | Qt Core | Qt 6.9.1

2、Qt 库提供了一组基于模板的通用容器类。这些类可用于存储指定类型的项目。可参考官网

Container Classes | Qt Core | Qt 6.9.1

http://www.xdnf.cn/news/19519.html

相关文章:

  • 【数学建模学习笔记】数据标准化
  • LeetCode刷题记录----74.搜索二维矩阵(Medium)
  • 构建无广告私人图书馆Reader与cpolar让电子书库随身携带
  • 站在巨人的肩膀上:gRPC通过HTTP/2构建云原生时代的通信标准
  • Unity游戏打包——打包流程
  • 【C++】类型转换详解:显式与隐式转换的艺术
  • Vue2存量项目国际化改造踩坑
  • Ansible变量的定义与使用
  • 安卓11 12系统修改定制化_____常用的几种修改固件 实现指定 “运行内存” 显示
  • 【lucene】 中的impactsenum与impactsdisi有啥区别?
  • 拥抱智能高效翻译 ——8 款视频翻译工具深度测评
  • (附源码)留言系统的设计与实现
  • 标定分享3--lidar与rtk/ins标定外参工程实现分享
  • 变频器实习总结14 电子元件中的内部参考电压 Type-c口对于BMS开发的优点
  • Synchronized 概述
  • 平衡二叉树(一)
  • 2016考研数学(二)真题
  • sunset: noontide靶场
  • AlphaFold 2 本地部署与安装教程(Linux)
  • 高速CANFD通讯接口芯片ASM1042性能分析与5Mbps多节点测验
  • 包的相对导入
  • MPI-NCCL-TEST 训练自检,基础通信和可用的机器
  • 《Bishop PRML》10.1 (3) 理解VAE KL loss
  • 【贪心算法】day5
  • PPO、DPO和GRPO的区别
  • Python实现BP神经网络
  • 利用美团longcat.ai编写的C语言支持指定压缩算法通用ZIP压缩程序
  • 硬件工程师成长之路:从入门到精通的技术旅程
  • 科学研究系统性思维的方法体系:研究设计相关模版
  • go 开发环境配置 air + dlv debug 踩坑之旅