QT:UI控件(按设计师界面导航界面排序)

news2024/11/24 12:58:58

基础部分

创建新项目:QWidget,QMainWindow,QDialog
QMainWindow继承自QWidget,多了菜单栏;
QDialog继承自QWidget,多了对话框

QMainWindow 菜单栏和工具栏:
Bar:

菜单栏:QMenuBar,菜单:QMenu

在这里插入图片描述

    //重置窗口大小
    resize(600,400);

    //菜单栏创建(菜单栏最多只能有一个)
    QMenuBar * bar = menuBar();
    //将菜单栏放入到窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu * filename= bar->addMenu("文件");
    QMenu * editname= bar->addMenu("编辑");

    QAction * newAction = filename->addAction("新建");
    //添加分割线
    filename->addSeparator();
    //增加子菜单的内容
    QAction * OpenAction = filename->addAction("打开");
    
    //设置中心部件 只能有一个(这个可加可不加)
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);
工具栏:QToolBar,
状态栏:QStatusBar();
浮动窗口:QDockWidget	可以有多个
对话框:
消息对话框QMessage:错误对话框(critical),信息对话框(information),问题对话框(question),警告
选择颜色(QColorDialog):
选择文件或目录(QFileDialog):
...还有几个其他的标准对话框

按钮组

pushButton 显示文字


//lambda表达式(C++11特性):[](){};	
	connect(mybtn,&MyPushButton::clicked,[=](){
		this->close();
	});
//点击新建按钮,弹出对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //对话框
        QDialog dlg(this);
        dlg.exec();
    });

ToolButton 可用来显示图片
单选: Radio Button
多选:check Box
(group box 可将选项button放在一起(单选/多选))

Item Views(Model-base)

是基于其他模组的,例如数据库之类。不常用

Item Widgets (Item-base):

在这里插入图片描述

表格控件:

控件:QListWidget(图片部件标注1的部分)
List Widget (分行显示):每一行:QListWidgetItem ,然后加入(addItem)到ui的listwidget控件中

//利用ListWidget逐行显示
    QListWidgetItem *item = new QListWidgetItem("one");
    //将第一行
    ui->listWidget->addItem(item);
    item->setTextAlignment(Qt::AlignHCenter);

    QStringList list;
    list<<"456"<<"7931"<<"46913";

    list.append("93");
    list.insert(6,"6666");

    ui->listWidget->addItems(list);

控件:QTreeWidget树控件(图片部件标注2的部分)
实现树列介绍,

//利用TreeWidget树控件使用
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

    QTreeWidgetItem * item_li = new QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * item_min = new QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * item_zhi = new QTreeWidgetItem(QStringList()<<"智力");

    //加载顶层的节点
    ui->treeWidget->addTopLevelItem(item_li);
    ui->treeWidget->addTopLevelItem(item_min);
    ui->treeWidget->addTopLevelItem(item_zhi);

    //追加子节点
    QStringList herpL1;
    herpL1<<"英雄1"<<"技能点1,技能点2";
    QTreeWidgetItem * L1 = new QTreeWidgetItem(herpL1);
    item_li->addChild(L1);

控件:QTableWidget控件(图片部件标注3的部分)

//利用TableWidget控件使用(表格)
    //设置列数
    ui->tableWidget->setColumnCount(3);

    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList ()<<"姓名"<<"性别"<<"年龄");

    //设置行数
    ui->tableWidget->setRowCount(5);

    //设置正文(第一行第一列)
    //ui->tableWidget->setItem(0,0,new QTableWidgetItem("人物1"));
    QStringList namelist;
    namelist<<"人物1"<<"人物2"<<"人物3"<<"人物4";

    QStringList sexlist;
    sexlist << "女1" <<"男1"<<"男1"<<"女2";     //此处使用"女1"

    for(int i=0;i<4;i++)
    {
        int col=0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(namelist[i]));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexlist[i]));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));
    }

其他常用控件:(Containers容器)

Group Box 分组的部件(直接在ui中拖动设置即可)(一般设置页面排版时用到,例如在单选/多选框)

Scroll Area 滚动的区域,滚动条(直接在ui中拖动设置即可)(图片部件标注4的部分)

ToolBox 分页(直接在ui中拖动设置即可)(图片部件标注5的部分)

Tab Widget 分页(直接在ui中拖动设置即可)(图片部件标注6的部分)

stacked widget 切换页面(调试时直接在ui中拖动设置即可,但是使用调用时需使用栈空间的索引进行切换),(图片部件标注7的部分)
例如:开发中有可识别的切换按钮,但是程序中切换需要通过新增按钮来进行切换(setCurrentIndex)

//栈控件的使用
    //设置默认值页面
    ui->stackedWidget->setCurrentIndex(0);
    connect(ui->pushButton_stackW_1,&QPushButton::clicked,[=](){
       ui->stackedWidget->setCurrentIndex(0);   //定位到栈空间的索引
    });
    connect(ui->pushButton_stackW_2,&QPushButton::clicked,[=](){
       ui->stackedWidget->setCurrentIndex(1);   //定位到栈空间的索引
    });
    connect(ui->pushButton_stackW_3,&QPushButton::clicked,[=](){
       ui->stackedWidget->setCurrentIndex(2);   //定位到栈空间的索引
    });

Frame是一个边框

其他常用控件:(Input Widget)

在这里插入图片描述

Frame是一个边框
(Input Widget)

Combo Box 下拉框:(直接在ui中拖动设置即可)(图片部件标注1的部分)
//comboBox下拉框
    ui->comboBox->addItem("车1");
    ui->comboBox->addItem("车2");
    ui->comboBox->addItem("车3");

    //点击按钮,选中车三选项
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        //ui->comboBox->setCurrentIndex(2);
        //或者直接输入文字(在确定有该选项的情况下)
        ui->comboBox->setCurrentText("车3");
    });
fontComboBox 字体下拉框(图片部件标注2的部分)
lineEdit 单行编辑框(图片部件标注3的部分)
TextEdit 多行编辑框(可改变字体颜色形式等)(图片部件标注4的部分)
Plain TextEdit 纯文本多行编辑框
spin box 逐个增减输入框(图片部件标注5的部分)
Double spin box 加小数点的(图片部件标注6的部分)
Time Edit 时间输入框(图片部件标注7的部分)
dateEdit 日期输入框
dateTimeEdit 时间和日期输入框
horizontalScrollBar	水平滑动条
verticalScrollBar	竖直滑动条
horizontalSlider	水平滑动条(可与spin box进行组合)
verticalSlider 	竖直滑动条(可与spin box进行组合)

(Display widget)显示标签
label :可显示文字和图片(首先需要把图片添加到资源文件中,然后程序添加显示图片)
在这里插入图片描述

//在lable中显示图片(图片提前加载到项目资源文件res中)

    ui->label->setPixmap(QPixmap(":/1.jpg"));

    //在lable中也可以放动图
    QMovie * movie = new QMovie(":/one.gif");   //注意后缀需要是gif
    ui->label->setMovie(movie);
    //播放动图
    movie->start();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/878744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.文件共享

第四章 文件管理 5.文件共享 ​   假设此时系统中有两个用户User1和User2正在使用硬链接的方式来共享的使用文件1&#xff0c;而另一个用户User3想使用软连接的方式来共享这个文件1&#xff0c;那么User3会建立一个新的文件&#xff0c;这个文件是一个特殊的Link类型的文件&…

并发编程 - 线程池中的常见面试题

目录 1. 线程池相比于线程有什么优点 2. 线程池的参数有哪些 3. 线程工厂有什么用 4. 说一下线程的优先级 5. 说一下线程池的执行流程 6. 线程池的拒绝策略有哪些 7. 如何实现自定义拒绝策略 8. 如何判断线程池中的任务是否执行完成 1. 线程池相比于线程有什么优点 有…

算法分析与应用解决(GMM算法、非线性拟合、降维(PCA)方法),记录

1、目的 项目具体不便透露&#xff0c;主要记录方法的理解与使用。 数据分析工具见上一篇博客 https://blog.csdn.net/qq_36212935/article/details/130849333 2、背景 数据分析&#xff0c;FSC、SSC、SFL数据直方图如下&#xff1a; 发现SFL数据呈一定“高斯”分布图像&am…

Vue中 组件间的通信

目录 引入 父组件>子组件 子组件>父组件 全局事件总线 消息订阅与发布 引入 你知道Vue中组件之间应该如何进行通信吗&#xff1f;这里面就涉及到了多个关系了&#xff0c;父子之间互传、兄弟之间互传、子孙之间互传&#xff0c;甚至是任意的组件之间传递...... 是不…

Python基础教程: json序列化详细用法介绍

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 Python内置的json模块提供了非常完善的对象到JSON格式的转换。 废话不多说&#xff0c;我们先看看如何把Python对象变成一个JSON&#xff1a; d dict(nameKaven, age17, sexMale) print(json.dumps(d)) # {"na…

C++:模拟实现list

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…

【swagger2】swagger2配置显示及修改描述

需求描述 项目接口文档使用yapi来进行管理,原来的controller仅使用了一个@Api的注解,且注解的描述是controller类名,添加@ApiOperation、@ApiModel和@ApiModelProperty后,第一次生成接口-接口列表下的分组是现在@Api配置的名称,业务和产品要看这个接口,显示controller类…

R语言生存分析(机器学习)(2)——Enet(弹性网络)

弹性网络&#xff08;Elastic Net&#xff09;:是一种用于回归分析的统计方法&#xff0c;它是岭回归&#xff08;Ridge Regression&#xff09;和lasso回归&#xff08;Lasso Regression&#xff09;的结合&#xff0c;旨在克服它们各自的一些限制。弹性网络能够同时考虑L1正则…

解析TCP/IP协议的分层模型:探寻网络通信的精髓

了解ISO模型&#xff1a;构建通信的蓝图 为了促进网络应用的普及&#xff0c;国际标准化组织&#xff08;ISO&#xff09;引入了开放式系统互联&#xff08;Open System Interconnect&#xff0c;OSI&#xff09;模型。这个模型包括了七个层次&#xff0c;从底层的物理连接到顶…

图像变形之移动最小二乘算法(MLS)

基本原理 基于移动最小二乘的图像变形是通过一组源控制点和目标控制点来控制变形&#xff0c;对于每一个待求变形后位置的点而言&#xff0c;根据预设的形变类型&#xff08;如仿射变换、相似变换、刚性变换&#xff09;求解一个最小二乘优化目标函数估计一个局部的坐标变换矩阵…

leetcode 力扣刷题 旋转矩阵(循环过程边界控制)

力扣刷题 旋转矩阵 二维矩阵按圈遍历&#xff08;顺时针 or 逆时针&#xff09;遍历59. 旋转矩阵Ⅱ54. 旋转矩阵剑指 Offer 29. 顺时针打印矩阵 二维矩阵按圈遍历&#xff08;顺时针 or 逆时针&#xff09;遍历 下面的题目的主要考察点都是&#xff0c;二维数组从左上角开始顺…

用Node.js吭哧吭哧撸一个运动主页

简单唠唠 某乎问题&#xff1a;人这一生&#xff0c;应该养成哪些好习惯&#xff1f; 问题链接&#xff1a;https://www.zhihu.com/question/460674063 如果我来回答肯定会有定期运动的字眼。 平日里也有煅练的习惯&#xff0c;时间久了后一直想把运动数据公开&#xff0c;…

Vue基本知识

一、vue入门 Vue为前端的框架&#xff0c;免除了原生js的DOM操作。简化书写。 基于MVVM的思想&#xff0c;实现数据的双向绑定&#xff0c;使编程的重点放在数据上。 1、引入vue.js文件 2、定义vue核心对象&#xff0c;定义数据模型 3、编写视图 //1、引入vue.js <scr…

【学习心得】安装cuda/cudann和pytorch

一、查看驱动信息 # 进入CMD输入命令 nvidia-smi 也可以右下角图标打开NVIDIA 设置进行查看 二、下载安装CUDA 1、下载 下载地址 https://developer.nvidia.com/ 2、安装 推荐自定义安装。建议只勾选Cuda&#xff0c;只安装这一个就好&#xff0c;以免报错安装失败。 3、验证…

05 - 研究 .git 目录

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. HEAD2. config3. refs4. objects 1. HEAD 2. config 3. refs 4. objects Git对象一共有三种&#xff1a;数据对象 blob、树对象 tree以及提交对象 commit&#xff0c;这些对象都被保…

小白到运维工程师自学之路 第七十四集 (kubernetes基于calico部署应用nginx)

一、详细介绍calico Calico 是一种基于 BGP 的、纯三层的、容器间互通的网络方案。与 OpenStack、Kubenetes、AWS、GCE 等云平台都能够良好的集成。在虚拟化平台中&#xff0c;如 OpenStack、Docker 等都需要实现 workloads 之间互连&#xff0c;但同时也需要对容器做隔离控制…

梅赛德斯-奔驰将成为首家集成ChatGPT的汽车制造商

ChatGPT的受欢迎程度毋庸置疑。OpenAI这个基于人工智能的工具&#xff0c;每天能够吸引无数用户使用&#xff0c;已成为当下很受欢迎的技术热点。因此&#xff0c;有许多公司都在想方设法利用ChatGPT来提高产品吸引力&#xff0c;卖点以及性能。在汽车领域&#xff0c;梅赛德斯…

抓包工具Fiddler下载与安装

一、Fiddler介绍 1.Fiddler简介 Fiddler 是一款免费、灵活、操作简单、功能强大的 HTTP 代理工具&#xff0c;是目前最常用的 HTTP 抓包工具之一。可以抓取所有的 HTTP/HTTPS 包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等…

GPT-4 如何为我编写测试

ChatGPT — 每个人都在谈论它,每个人都有自己的观点,玩起来很有趣,但我们不是在这里玩— 我想展示一些实际用途,可以帮助您节省时间并提高效率。 我在本文中使用GPT-4 动机 我们以前都见过这样的情况——代码覆盖率不断下降的项目——部署起来越来越可怕,而且像朝鲜一样…

POJ 2429 Miller-rabin素数判定 + pollard-rho质因子分解 + 埃氏筛法

题目不能说是很难&#xff0c;只是用到了许多数学上的知识&#xff08;费马小定理&#xff0c;miller-radin&#xff0c;pollard-rho&#xff09;&#xff0c;还有一些算法上的知识DFS&#xff0c;辗转相除。 我也很菜&#xff0c;一个周末的时间都用在这个题目上了&#xff0…