【Qt-Widget】

Qt编程指南

  • ■ QWidget
  • ■ QTabWidget
  • ■ QTableWidget
  • ■ QListWidget
  • ■ QStackedWidget
  • ■ QCalendarWidget

■ QWidget

vWidget[i] = new QWidget();
vWidget[i]->setAutoFillBackground(true);
该函数用于设置当窗口作为被包含窗口时, 是否需要绘制背景。
注意:QT窗口系统默认状态下, 当一个窗口作为被包含窗口时, 其不再绘制背景, 即使指定了背景绘制参数(如背景颜色、背景图片等)。```c
QWidget{
background-color: rgb(255, 170, 127);
}
//设置widget边框 这个设置会影响Widget上的子控件
ui->widget->setStyleSheet(QString::fromUtf8("border:3px solid blue"));
//设置widget_2边框
ui->widget->setStyleSheet(QString::fromUtf8("#widget_2{border:3px solid red}"));background-color: rgb(52, 57, 71);
border-bottom-left-radius: 20px;

■ QTabWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0, 0, 800, 480);widget = new QWidget(this);/* 居中 */this->setCentralWidget(widget);/* 多页面小部件 */tabWidget = new QTabWidget();/* 水平布局实例化 */hBoxLayout = new QHBoxLayout();QList <QString>strLabelList;strLabelList<<"标签一"<<"标签二"<<"标签三";QList <QString>strTabList;strTabList<<"页面一"<<"页面二"<<"页面三";QList <QString>iconList;iconList<<":/icons/icon1"<<":/icons/icon2"<<":/icons/icon3";for (int i = 0; i < 3; i++) {label[i] = new QLabel();/* 设置标签文本 */label[i]->setText(strLabelList[i]);/* 标签对齐方式(居中) */label[i]->setAlignment(Qt::AlignCenter);/* 添加页面 */tabWidget->addTab(label[i],QIcon(iconList[i]),strTabList[i]);}/* 是否添加关闭按钮 *///tabWidget->setTabsClosable(true);/* 将tabWidget水平直排布 */hBoxLayout->addWidget(tabWidget);/* 将垂直布局设置到widget */widget->setLayout(hBoxLayout);
}
MainWindow::~MainWindow()
{
}

■ QTableWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{/* 设置主窗体的大小与位置 */this->setGeometry(0, 0, 800, 480);/* 实例化 */tableWidget = new QTableWidget(this);/* 设置tableWidget表居中 */setCentralWidget(tableWidget);/* 设置列数 */tableWidget->setColumnCount(2);/* 设置行数 */tableWidget->setRowCount(2);/* 使用标签设置水平标题标签 */tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别");/* 字符串类型链表 */QList <QString> strList;strList<<"小明"<<"小红"<<"男"<<"女";for (int i = 0; i < 4; i++) {/* 实例化 */tableWidgetItem[i] = new QTableWidgetItem(strList[i]);/* 设置文本居中对齐 */tableWidgetItem[i]->setTextAlignment(Qt::AlignCenter);}/* 插入数据,表的index就是一个二维数组数据 */tableWidget->setItem(0, 0, tableWidgetItem[0]);tableWidget->setItem(1, 0, tableWidgetItem[1]);tableWidget->setItem(0, 1, tableWidgetItem[2]);tableWidget->setItem(1, 1, tableWidgetItem[3]);
}
MainWindow::~MainWindow()
{
}

■ QListWidget

//添加
void ProManageEdit::add(QStringList stlist)
{QListWidgetItem *item0 = new QListWidgetItem;ListManagEdit * editWidget = new ListManagEdit(this);editWidget->update(stlist);connect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));ui->listWidget->addItem(item0);ui->listWidget->setItemWidget(item0,editWidget);
}
//删除
void ProManageEdit::deleteStep(int step)
{auto editWidget = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(ui->listWidget->item(step)));disconnect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));ui->listWidget->removeItemWidget(ui->listWidget->item(step));
}//修改数据 或者交换
void ProManageEdit::swap(int fromstep, QStringList fromstlist, int tostep, QStringList tostlist)
{QListWidgetItem* fromitem = ui->listWidget->item(fromstep);QListWidgetItem* toitem = ui->listWidget->item(tostep);auto fromTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(fromitem));auto toTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(toitem));fromTest->update(tostlist);toTest->update(fromstlist);
}
listWidget->item(i)->setTextColor(QColor(22, 22, 22, 225));
ui->listWidget->setSpacing(5); // 设置边距离
设置每个QListWidgetItem 之间的距离
QListWidget 对不齐问题,是因为进度条导致的解决办法是/屏蔽垂直滚动条   
ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //屏蔽垂直滚动条

■ QStackedWidget

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0, 0, 800, 480);/* widget小部件实例化 */widget = new QWidget(this);/* 设置居中 */this->setCentralWidget(widget);/* 垂直布局实例化 */hBoxLayout = new QHBoxLayout();/* 堆栈部件实例化 */stackedWidget = new QStackedWidget();/* 列表实例化 */listWidget = new QListWidget();QList <QString>strListWidgetList;strListWidgetList<<"窗口一"<<"窗口二"<<"窗口三";for (int i = 0; i < 3; i++){/* listWidget插入项 */listWidget->insertItem(i,strListWidgetList[i]);}QList <QString>strLabelList;strLabelList<<"标签一"<<"标签二"<<"标签三";for (int i = 0; i < 3; i++){label[i] = new QLabel();/* 设置标签文本 */label[i]->setText(strLabelList[i]);/* 标签对齐方式(居中) */label[i]->setAlignment(Qt::AlignCenter);/* 添加页面 */stackedWidget->addWidget(label[i]);}/* 设置列表的最大宽度 */listWidget->setMaximumWidth(200);/* 添加到水平布局 */hBoxLayout->addWidget(listWidget);hBoxLayout->addWidget(stackedWidget);/* 将widget的布局设置成hboxLayout */widget->setLayout(hBoxLayout);/* 利用listWidget的信号函数currentRowChanged()与* 槽函数setCurrentIndex(),进行信号与槽连接*/connect(listWidget, SIGNAL(currentRowChanged(int)),stackedWidget, SLOT(setCurrentIndex(int)));
}
MainWindow::~MainWindow()
{
}

■ QCalendarWidget

	calendarWidget = new QCalendarWidget(this);calendarWidget->setGeometry(200, 20, 400, 300);QFont font;/* 设置日历里字体的大小为10像素 */font.setPixelSize(10);calendarWidget->setFont(font);/* 对象实例化设置显示的位置与大小 */pushButton = new QPushButton("回到当前日期",this);pushButton->setGeometry(200, 350, 100, 30);/* 对象实例化设置显示的位置与大小 */label = new QLabel(this);label->setGeometry(400, 350, 400, 30);QString str = "当前选择的日期:"+ calendarWidget->selectedDate().toString();label->setText(str);/* 信号槽连接 */connect(calendarWidget, SIGNAL(selectionChanged()),this, SLOT(calendarWidgetSelectionChanged()));connect(pushButton, SIGNAL(clicked()),this, SLOT(pushButtonClicked()));MainWindow::~MainWindow()
{}
void MainWindow::calendarWidgetSelectionChanged()
{/* 当日历点击改变当前选择的期时,更新Label的显示内容 */QString str = "当前选择的日期:"+ calendarWidget->selectedDate().toString();label->setText(str);
}void MainWindow::pushButtonClicked()
{/* 设置当前选定的日期为系统的QDate */calendarWidget->setSelectedDate(QDate::currentDate());
}


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

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

相关文章

易基因2023年度DNA甲基化研究项目文章精选

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2023年&#xff0c;易基因参与的DNA甲基化研究成果层出不穷&#xff0c;小编选取其中5篇不同方向的论文与您一起来回顾。 01、易基因微量DNA甲基化测序助力中国科学家成功构建胚胎干细胞…

工厂设备维护管理有什么比较好的解决方案?哪家的工单管理系统功能强大?

生产设备对于工厂来说是十分宝贵的资产。一方面&#xff0c;工厂依赖设备进行生产活动&#xff0c;一旦设备故障就会影响产量&#xff1b;另一方面&#xff0c;工厂中的生产设备一般造价都比较高昂&#xff0c;如果出现故障就会增加工厂的生产成本&#xff1b;再一方面&#xf…

Linux部署MeterSphere结合内网穿透实现远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

makefile教程(1)

makefile教程 makefile是什么&#xff1a; makefile是用户自行完成的IDE&#xff08;integrated development environment集成开发环境&#xff09;程序&#xff0c;与传统的操作系统下的编译不同&#xff0c;makefile可以通过用户自行安排&#xff0c;决定文件的编译顺序&am…

第 377 场周赛虚拟参赛记录及补题

最小数字游戏 3 题目 - 思路 模拟代码 class Solution { public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(),nums.end());vector<int> ans;for (int i 0;i < nums.size();i ) if (i&1)ans.push_back(nums[i-1]);else ans.…

postman的下载安装和使用

第一章、使用postman向后端发送请求 1.2&#xff09;postman下载与安装使用 我的百度网盘postman点击下载 提取码&#xff1a;bybp 下载后双击.exe文件直接安装 点击此次创建集合 点击此处创建请求 1.2&#xff09;发送get请求 选择自己的请求方式&#xff0c;输入请求…

Uboot

这里写目录标题 什么是Bootloader?Bootloader启动流程NAND Flash uboot是怎么和内核完成参数传递的&#xff1f; 什么是Bootloader? Linux系统要启动就必须需要一个 bootloader程序&#xff0c;也就说芯片上电以后先运行一段bootloader程序。 这段 **bootloader程序会先初始…

使用 FFmpeg 清除文件夹下所有 .mp4 文件声音

运行以下命令来清除声音&#xff1a; ffmpeg -i input.mp4 -c copy -an output.mp4这个命令会将 “input.mp4” 替换为你要处理的 .mp4 文件名。它会生成一个新的文件名为 “output.mp4” 的文件&#xff0c;该文件是没有声音的副本。 如果你想要直接替换原始文件&#xff0c;…

【网络编程】基于UDP数据报实现回显服务器程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…

互联网+建筑工地:技术革新引领建筑行业的未来

随着科技的飞速发展&#xff0c;互联网正日益渗透到建筑工地的方方面面。从设计、施工到管理&#xff0c;互联网建筑工地的深度融合不仅推动了建筑行业的数字化转型&#xff0c;还为工地管理、信息交流、安全监控等带来了全新的解决方案。本文将介绍互联网建筑工地的几个关键技…

java.lang.EnumConstantNotPresentException

枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象&#xff0c;但该枚举对象并不包含常量时&#xff0c;抛出该异常 1.遇到的问题是我删除了带有CustomAnnotation注解的类,启动服务器还是会抛出异常 2.首先全局搜索了相关的枚举名字 确认没有引用。后发现项目…

keras 人工智能之VGGNet神经网络的图片识别训练

上期文章我们分享了如何使用LetNet体系结构来搭建一个图片识别的神经网络: 人工智能Keras的第一个图像分类器(CNN卷积神经网络的图片识别) 本期我们基于VGGNet神经网络来进行图片的识别,且增加图片的识别种类,当然你也可以增加更多的种类,本期代码跟往期代码有很大的相…

【Qt-Bar】

Qt编程指南 ■ QTabBar■ QToolBar■ QScrollBar■ ■ QTabBar #基本样式设置 QTabBar::tab{font: 75 12pt "Arial"; #设置字体width:84px; #设置宽度height:30; #设置高度margin-top:5px; #设置边距mar…

cookie和它的封装

cookie是用来储存web页面的用户信息。 由于HTTP是一种无状态的协议&#xff0c;服务器但从网络链接上时无法知道客户信息的。 这个时候服务器会给客户端(浏览器)颁发一个cookie&#xff0c;用来确认用户的信息。 获取 cookie document.cookie 设置 cookie document.cookie&q…

【MySQL】:超详细MySQL完整安装和配置教程

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. MySQL数据库1.1 版本1.2 下载1.3 安装1.4 客户端连接 &#x1f324;️全篇总…

Docker面试题

大家好&#xff0c;我是升仔 1、Docker中镜像和容器的区别是什么&#xff1f; Docker镜像和容器的主要区别在于它们的角色和功能&#xff1a; 1、静态与动态&#xff1a; Docker镜像是一个静态的文件&#xff0c;它包含了运行容器所需的代码、库、环境变量和配置文件。而容器…

LaTex设置标题页、修改文字颜色和文字高亮

目录 一、标题页 1&#xff09;常用的代码 2&#xff09;添加脚注 二、修改文字颜色和文字高亮 1&#xff09;设置文本的颜色 2&#xff09;添加文本高亮 3&#xff09;给文本添加有颜色的方框 一、标题页 主要的代码&#xff1a; \begin{titlepage} \noindent\fonts…

如何实现https密钥对登录方式

先安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo systemctl start docker.service systemctl enable docker.service yum install -y docker…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…

nosql-redis整合测试

nosql-redis整合测试 1、创建项目并导入redis2、配置redis3、写测试类4、在redis中创建key5、访问80826、在集成测试中测试方法 1、创建项目并导入redis 2、配置redis 3、写测试类 4、在redis中创建key 5、访问8082 6、在集成测试中测试方法 package com.example.boot3.redis;…