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

qt功能自己创作

按钮按下三秒禁用

void MainWindow::on_pushButton_5_clicked(){// 锁定界面setWidgetsEnabled(ui->centralwidget, false);// 创建一个定时器,等待3秒后解锁界面QTimer::singleShot(3000, this, [=]() {setWidgetsEnabled(ui->centralwidget, true);;//ui->centralwidget这个是全局布局});}// 将界面的所有控件禁用或启用void MainWindow::setWidgetsEnabled(QWidget *widget, bool enabled) {if (widget) {for (auto child : widget->findChildren<QWidget*>()) {if (child->isWidgetType()) {child->setEnabled(enabled);qDebug() << "Widget:" << child->objectName() << "Enabled:" << enabled;}}}}

读写配置文件 

void MainWindow::read_init()
{QSettings settings("myapp.ini", QSettings::IniFormat);if (!settings.contains("server/port")) {// 如果不存在,才写入配置项settings.setValue("server/port", "8080");}server_PortStr = settings.value("server/port").toString();qDebug() << "port:" << server_PortStr;
}

不同文件利用信号和槽通信

发送方

dialog.h

signals:void dataEntered(const QString &data);

dialog.c

emit dataEntered(ipAddress);

接收方

mainwindow.h

private slots:void receiveData(const QString &data);
private:Dialog *dialog;

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);dialog= new Dialog();connect(dialog, SIGNAL(dataEntered(QString)), this, SLOT(receiveData(QString)));
}void MainWindow::receiveData(const QString &data) {// 在这里处理接收到的数据server_IP=data;qDebug() << "Received data in MainWindow:" << server_IP;//插入新行int currentRow = ui->tableWidget->rowCount();qDebug() << "currentRow" << currentRow;ui->tableWidget->insertRow(currentRow);// 创建一个 QTableWidgetItem 对象并设置文本QTableWidgetItem *item1 = new QTableWidgetItem(QString::number(currentRow + 1)); // 设置序号QTableWidgetItem *item2 = new QTableWidgetItem(server_IP); // 设置数据// 插入 QTableWidgetItem 到指定行和列ui->tableWidget->setItem(currentRow, 0, item1); // 设置第一列的单元格为序号ui->tableWidget->setItem(currentRow, 1, item2); // 设置第二列的单元格为数据
}

UDP通信

void MainWindow::sendAndReceiveData(const QByteArray &sendData, QByteArray &receivedData, const QString &serverIP) {// 将字符串形式的端口号转换为整数bool ok;quint16 serverPort = server_PortStr.toUShort(&ok);if (!ok) {qDebug() << "Invalid port number:" << server_PortStr;return; // 如果端口号无效,函数直接返回}// 将字符串形式的IP地址转换为QHostAddressQHostAddress serverAddress(serverIP);// 发送数据到服务器udpSocket->writeDatagram(sendData, serverAddress, serverPort);// 接收服务器的回复QByteArray responseData;while (udpSocket->waitForReadyRead()) {responseData.resize(udpSocket->pendingDatagramSize());QHostAddress senderAddress;quint16 senderPort;udpSocket->readDatagram(responseData.data(), responseData.size(), &senderAddress, &senderPort);MainWindow::~MainWindow()
{//关闭套接字,并丢弃写缓冲区中的所有待处理数据。//   udpSocket->abort();delete ui;
}// 将接收到的数据存储到传入的receivedData变量中receivedData = responseData;qDebug() << "Received response from server" << senderAddress.toString() << "on port" << senderPort;qDebug() << "Response Data:" << responseData;}
}

样式表使用方法

在项目文件创建一个文件styles.qss,然后在qt资源文件打开现有文件即可

然后代码加载;

建议要用样式表都用样式表

具体的样式比样式表级别高(具体样式背景影响样式表控件的样式)

加载样式表在main函数里加载

int main(int argc, char *argv[])
{QApplication a(argc, argv);// 加载样式表文件QFile styleFile(":/new/styles.qss"); // 样式表文件的路径if (styleFile.open(QFile::ReadOnly | QFile::Text)) {QTextStream stream(&styleFile);QString style = stream.readAll();a.setStyleSheet(style); // 应用样式表styleFile.close();}MainWindow w;w.show();return a.exec();
}

多线程

class WorkerThread : public QThread
{Q_OBJECT
public:WorkerThread() : shouldStop(false) {}void stopThread() {shouldStop = true;}protected:void run() override {
//运行代码}private:bool shouldStop;};
void MainWindow::on_pushButton_clicked()
{// 创建 WorkerThread 对象并连接 finished 信号workerThread = new WorkerThread;QObject::connect(workerThread, &QThread::finished, [&]() {// 后台线程完成时设置按钮文本ui->pushButton->setEnabled(true);ui->pushButton->setText("刷新状态");// 释放 WorkerThread 对象workerThread->deleteLater();});// 点击按钮后设置按钮文本为 "刷新中..."ui->pushButton->setText("刷新中...");ui->pushButton->setEnabled(false);// 启动后台线程执行循环workerThread->start();}

相关文章:

qt功能自己创作

按钮按下三秒禁用 void MainWindow::on_pushButton_5_clicked(){// 锁定界面setWidgetsEnabled(ui->centralwidget, false);// 创建一个定时器&#xff0c;等待3秒后解锁界面QTimer::singleShot(3000, this, []() {setWidgetsEnabled(ui->centralwidget, true);;//ui-&g…...

Linux网络编程:使用UDP和TCP协议实现网络通信

目录 一. 端口号的概念 二. 对于UDP和TCP协议的认识 三. 网络字节序 3.1 字节序的概念 3.2 网络通信中的字节序 3.3 本地地址格式和网络地址格式 四. socket编程的常用函数 4.1 sockaddr结构体 4.2 socket编程常见函数的功能和使用方法 五. UDP协议实现网络通信 5.…...

【后端速成 Vue】初识指令(上)

前言&#xff1a; Vue 会根据不同的指令&#xff0c;针对标签实现不同的功能。 在 Vue 中&#xff0c;指定就是带有 v- 前缀 的特殊 标签属性&#xff0c;比如&#xff1a; <div v-htmlstr> </div> 这里问题就来了&#xff0c;既然 Vue 会更具不同的指令&#…...

爬虫 — Scrapy-Redis

目录 一、背景1、数据库的发展历史2、NoSQL 和 SQL 数据库的比较 二、Redis1、特性2、作用3、应用场景4、用法5、安装及启动6、Redis 数据库简单使用7、Redis 常用五大数据类型7.1 Redis-String7.2 Redis-List (单值多value)7.3 Redis-Hash7.4 Redis-Set (不重复的)7.5 Redis-Z…...

tcpdump常用命令

需要安装 tcpdump wireshark ifconfig找到网卡名称 eth0, ens192... tcpdump需要root权限 网卡eth0 经过221.231.92.240:80的流量写入到http.cap tcpdump -i eth0 host 221.231.92.240 and port 80 -vvv -w http.cap ssh登录到主机查看排除ssh 22端口的报文 tcpdump -i …...

计算机网络运输层网络层补充

1 CDMA是码分多路复用技术 和CMSA不是一个东西 UPD是只确保发送 但是接收端收到之后(使用检验和校验 除了检验的部分相加 对比检验和是否相等。如果不相同就丢弃。 复用和分用是发生在上层和下层的问题。通过比如时分多路复用 频分多路复用等。TCP IP 应用层的IO多路复用。网…...

java CAS详解(深入源码剖析)

CAS是什么 CAS是compare and swap的缩写&#xff0c;即我们所说的比较交换。该操作的作用就是保证数据一致性、操作原子性。 cas是一种基于锁的操作&#xff0c;而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住&#xff0c;等之前获得锁的线程释放锁之后&am…...

1786_MTALAB代码生成把通用函数生成独立文件

全部学习汇总&#xff1a; GitHub - GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes…...

2023/09/19 qt day3

头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDebug> #include <QTime> #include <QTimer> #include <QPushButton> #include <QTextEdit> #include <QLineEdit> #include <QLabel> #include &l…...

Docker 学习总结(78)—— Docker Rootless 让你的容器更安全

前言 在以 root 用户身份运行 Docker 会带来一些潜在的危害和安全风险,这些风险包括: 容器逃逸:如果一个容器以 root 权限运行,并且它包含了漏洞或者被攻击者滥用,那么攻击者可能会成功逃出容器,并在宿主系统上执行恶意操作。这会导致宿主系统的安全性受到威胁。 特权升…...

如何使用ArcGIS Pro将等高线转DEM

通常情况下&#xff0c;我们拿到的等高线数据一般都是CAD格式&#xff0c;如果要制作三维地形模型&#xff0c;使用栅格格式的DEM数据是更好的选择&#xff0c;这里就为大家介绍一下如何使用ArcGIS Pro将等高线转DEM&#xff0c;希望能对你有所帮助。 创建TIN 在工具箱中选择“…...

【爬虫基础】万字长文详解XPath

1. 引言 XPath&#xff08;XML Path Language&#xff09;是一种在XML和HTML文档中查找和定位信息的强大工具。XPath的重要性在于它允许我们以简洁而灵活的方式导航和选择文档中的元素和属性。本文将深入介绍XPath的基础知识&#xff0c;帮助你掌握这个强大的查询语言&#xf…...

分布式多级缓存SDK设计的思考

分布式多级缓存SDK设计的思考 背景整体架构多层级组装回调埋点分区处理一致性问题缓存与数据库之间的一致性问题不同层级缓存之间的一致性问题不同微服务实例上&#xff0c;非共享缓存之间的一致性问题 小结 之前实习期间编写过一个简单的多级缓存SDK&#xff0c;后面了解到一些…...

设计模式:适配器模式(C++实现)

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常用于连接两个不兼容的接口或类&#xff0c;使它们能够一起工作。 以下是一个简单的C适配器模式的示例&#xff1a; #in…...

【深度学习实验】前馈神经网络(二):使用PyTorch实现不同激活函数(logistic、tanh、relu、leaky_relu)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 定义激活函数 logistic(z) tanh(z) relu(z) leaky_relu(z, gamma0.1) 2. 定义输入、权重、偏置 3. 计算净活性值 4. 绘制激活函数的图像 5. 应用激活函数并…...

容器技术所涉及Linux内核关键技术

一、容器技术前世今生 1.1 1979年 — chroot 容器技术的概念可以追溯到1979年的UNIX chroot。 它是一套“UNIX操作系统”系统&#xff0c;旨在将其root目录及其它子目录变更至文件系统内的新位置&#xff0c;且只接受特定进程的访问。 这项功能的设计目的在于为每个进程提供…...

IPV4和IPV6,公网IP和私有IP有什么区别?

文章目录 1、什么是IP地址&#xff1f;1.1、背景1.2、交换机1.3、局域网1.4、广域网1.5、ISP 互联网服务提供商 2、IPV42.1、什么是IPV4&#xff1f;2.2、IPV4的组成2.3、NAT 网络地址转换2.4、端口映射 3、公网IP和私有IP4、IPV6 1、什么是IP地址&#xff1f; 1.1、背景 一台…...

高云FPGA系列教程(7):ARM GPIO外部中断

文章目录 [toc]GPIO中断简介FPGA配置常用函数MCU程序设计工程下载 本文是高云FPGA系列教程的第7篇文章。 本篇文章介绍片上ARM Cortex-M3硬核处理器GPIO外部的使用&#xff0c;演示按键中断方式来控制LED亮灭&#xff0c;基于TangNano 4K开发板。 参考文档&#xff1a;Gowin_E…...

Python爬虫:动态获取页面

动态网站根据用户的某些操作产生一些结果。例如&#xff0c;当网页仅在向下滚动或将鼠标移动到屏幕上时才完全加载时&#xff0c;这背后一定有一些动态编程。当您将鼠标指针悬停在某些文本上时&#xff0c;它会为您提供一些选项&#xff0c;它还包含一些动态.这是是一篇关于动态…...

大数据平台迁移后yarn连接zookeeper 异常分析

大数据平台迁移后yarn连接zookeeper 异常分析 XX保险HDP大数据平台机房迁移异常分析。 异常现象&#xff1a; 机房迁移后大部分组件都能正常启动Yarn 启动后8088 8042等端口无法访问Hive spark 作业提交到yarn会出现卡死。 【备注】虽然迁移&#xff0c;但IP不变。 1. Yarn连…...

Ubuntu Nginx 配置 SSL 证书

首先需要在 Ubuntu 中安装 Nginx 服务, 打开终端执行以下命令: $ sudo apt update $ sudo apt install nginx -y然后启动 Nginx 服务并设置为开机时自动启动, 执行以下命令: $ sudo systemctl start nginx $ sudo systemctl enable nginx最后再验证一下 Nginx 服务的当前状态…...

将本地前端工程中的npm依赖上传到Nexus

【问题背景】 用Nexus搭建了内网的依赖仓库&#xff0c;需要将前端工程中node_modules中的依赖上传到Nexus上&#xff0c;但是node_modules中的依赖已经是解压后的状态&#xff0c;如果直接机械地将其简单地打包上传到Nexus&#xff0c;那么无法通过npm install下载使用。故有…...

软考高级架构师下篇-16通信系统架构设计理论与实践

目录 1. 引言2. 通信系统网络架构3. 网络构建关键技术4. 网络构建5. 前文回顾1. 引言 此章节主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本节知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中…...

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

要用人工智能技术来庆祝国庆中秋&#xff0c;我们可以使用生成对抗网络&#xff08;GAN&#xff09;生成具有节日氛围的画作。这里将使用深度学习框架 TensorFlow 和 Keras 来实现。 一、生成对抗网络&#xff08;GAN&#xff09; 生成对抗网络&#xff08;GANs&#xff0c;…...

stm32 串口发送和接收

串口发送 #include "stm32f10x.h" // Device header #include <stdio.h> #include <stdarg.h>//初始化串口 void Serial_Init() {//开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Pe…...

Vite + Vue3 实现前端项目工程化

通过官方脚手架初始化项目 第一种方式&#xff0c;这是使用vite命令创建&#xff0c;这种方式除了可以创建vue项目&#xff0c;还可以创建其他类型的项目&#xff0c;比如react项目 npm init vitelatest 第二种方式&#xff0c;这种方式是vite专门为vue做的配置&#xff0c;…...

Java动态代理Aop的好处

1. 预备知识-动态代理 1.1 什么是动态代理 动态代理利用Java的反射技术(Java Reflection)生成字节码&#xff0c;在运行时创建一个实现某些给定接口的新类&#xff08;也称"动态代理类"&#xff09;及其实例。 1.2 动态代理的优势 动态代理的优势是实现无侵入式的代…...

各种存储性能瓶颈如何分析与优化?

【摘要】本文结合实践剖析存储系统的架构及运行原理&#xff0c;深入分析各种存储性能瓶颈场景&#xff0c;并提出相应的性能优化手段&#xff0c;希望对同行有一定的借鉴和参考价值。 【作者】陈萍春&#xff0c;现就职于保险行业&#xff0c;拥有多年的系统、存储以及数据备…...

Android StateFlow初探

Android StateFlow初探 前言&#xff1a; 最近在学习StateFlow&#xff0c;感觉很好用&#xff0c;也很神奇&#xff0c;于是记录了一下. 1.简介&#xff1a; StateFlow 是一个状态容器式可观察数据流&#xff0c;可以向其收集器发出当前状态更新和新状态更新。还可通过其 …...

Docker Compose初使用

简介 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&#xff08;cont…...

网站创意设计方案/b站视频推广怎么买

我正在努力以自己的方式打印JTables。这是我在打印时想要获得的&#xff1a;Page 1 Page 2 Page 3| 1 2 3 | | 4 5 6 | | 7 8 9 ||1 | |1 | |1 ||2 | |2 | |2 ||3 | |3 | |3 |Page 4 Page 5 Page 6| 1 2 3 | | 4 5 6 | | 7 8 9 ||4 | |4 | |4 ||5 | |5 | |5 ||6 | |6 | |6 |如您…...

深色调网站/31省市新增疫情最新消息

打开被【限制编辑】的加密文档&#xff0c;单击【文件】→【另存为】菜单&#xff0c;会弹出下图所示窗口&#xff1a;将此文档的保存类型选择“网页文件(*.html;*.htm)”&#xff0c;然后点击保存。用记事本、写字板或editplus打开刚刚保存的html文件&#xff0c;用快捷键Ctrl…...

南阳做网站公司哪家好/360网站推广怎么做

PS域和CS域 参考链接&#xff1a;https://zhidao.baidu.com/question/1691360411931618948.html PS域&#xff0c;分组交换&#xff08;Packet Switch&#xff09;&#xff0c;有时又称分组业务&#xff08;Packet Service&#xff09;&#xff0c;这是移动通信网络zhi发展的早…...

互联网开网站怎么做/杭州百家号优化

# 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #define STACKINCREMENT 10//存储空间分配增量 #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2typedef struct QNode{i…...

阿里云服务器上做淘宝客网站/关键词首页排名优化公司推荐

一、轴类零件是常见的零件之一。按轴类零件结构形式不同&#xff0c;一般可分为光轴、阶梯轴和异形轴三类&#xff1b;或分为实心轴、空心轴等。 二、台阶轴的加工工艺较为典型&#xff0c;反映了轴类零件加工的大部分内容与基本规律。 1、零件图样分析 传动轴 所示零件是减…...

搜狐快站怎么做网站/免费下载优化大师

使用conda安装时 进入虚拟环境进行执行命令就行了...