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

嵌入式项目之QT页面制作

学习一下QT的基本语法以及基本操作

基本语法

设置title名字

this->setWindowTitle("xxxx");

设置具体字体型号

Qfont f("仿宋" , 14); //创建字体对象
ui->lineEdit->setFont(f);

按钮上设置图片

QIcon con("D:\\xxx\\xxx\\xxx\\xxx.png");
ui->xxxButton->setIcon(con);

改变按钮颜色

ui->equalButton->setStyleSheet("background:blue");

定时器事件

1、使用QObject成员函数
this->startTimer(Timeout); //返回成功创建的定时器id
设置timerEvent事件函数
timerEvent(QTimerEvent *event)
killTimer(id)2、使用Qtimer这个类  
#include <QTimer>
QTimer->start(Timeout);
connect(timer , &QTimer::timeout , this ,&Widget::timeoutSlot);
timer->stop()

用Qt做一个简单的notepad

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->newaction , &QAction::triggered , this , &MainWindow::newactionslot);connect(ui->openaction , &QAction::triggered , this , &MainWindow::openactionslot);connect(ui->saveoption , &QAction::triggered , this , &MainWindow::saveactionslot);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::newactionslot()
{ui->textEdit->clear();this->setWindowTitle("新建文件夹.txt");
}void MainWindow::openactionslot()
{QString fileName = QFileDialog::getOpenFileName(this, "选择一个文件",QCoreApplication::applicationFilePath(),"*.cpp , *.c , *.txt");if(fileName.isEmpty()){QMessageBox::warning(this , "警告" , "请选择一个文件");}else{//qDebug() << fileName;QFile file(fileName);         //创建文件对象file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}
}void MainWindow::saveactionslot()
{QString fileName = QFileDialog::getSaveFileName(this, "选择一个文件",QCoreApplication::applicationFilePath());if(fileName.isEmpty()){QMessageBox::warning(this , "警告" , "请选择一个文件");}else{QFile file(fileName);file.open(QIODevice::WriteOnly);//ui->textEdit->toPlainText(); //显示QByteArray ba;ba.append(ui->textEdit->toPlainText().toUtf8());file.write(ba);file.close();QMessageBox::information(this, "保存成功", "文件已成功保存!");}
}

上述代码不能实现CTRL+S自动保存功能,接下 来要实现其功能,在QT中都被封装成事件,我们要重写虚函数,实现热键功能

void MainWindow::keyPressEvent(QKeyEvent * k)
{if(k->modifiers() == Qt::ControlModifier && k->key() == QT::key_S){saveactionslot();}
}

QT网络部分

为了兼容Windows和Linux,QT将网络接口封装成类。这样既可以在Linux和Windows运行。

在QT里面使用网络要在.pro文件的第一行加上network。

Client端

#include <QTcpSocket>
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);socket = new QTcpSocket;
}Widget::~Widget()
{delete ui;
}void Widget::on_cancelButton_clicked()
{this->close();
}void Widget::on_connectButton_clicked()
{QString ip = ui->iplineEdit->text();QString port = ui->portlineEdit->text();// qDebug() << ip;// qDebug() << port;socket->connectToHost(QHostAddress(ip), port.toShort());qDebug() << ip;qDebug() << port;connect(socket , &QTcpSocket::connected , [this](){QMessageBox::information(this , "连接提示" , "连接服务器成功");});connect(socket , &QTcpSocket::disconnected , [this](){QMessageBox::warning(this , "连接提示" , "连接异常 网络断开");});
}

Server端

服务器端需要包含两个头文件

#include <QTcpServer>
#include <QTcpSocket>
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);server = new QTcpServer;server->listen(QHostAddress::AnyIPv4 , PORT);connect(server , &QTcpServer::newConnection , this , &Widget::newclienthandler);
}Widget::~Widget()
{delete ui;
}void Widget::newclienthandler()
{//建立TCP连接QTcpSocket*socket = server->nextPendingConnection();//socket->peerAddress();//socket->peerPort();ui->IPlineEdit->setText(socket->peerAddress().toString());ui->IPlineEdit->setText(QString::number(socket->peerPort()));
}


文章转载自:
http://brolga.jopebe.cn
http://aftertaste.jopebe.cn
http://aquarist.jopebe.cn
http://accustomed.jopebe.cn
http://bedroll.jopebe.cn
http://bedraggle.jopebe.cn
http://baroness.jopebe.cn
http://alluvion.jopebe.cn
http://carnify.jopebe.cn
http://cheth.jopebe.cn
http://ambeer.jopebe.cn
http://cardioid.jopebe.cn
http://acceptably.jopebe.cn
http://amr.jopebe.cn
http://atrociously.jopebe.cn
http://bochum.jopebe.cn
http://bandh.jopebe.cn
http://archaeomagnetism.jopebe.cn
http://becquerel.jopebe.cn
http://carifta.jopebe.cn
http://cancellous.jopebe.cn
http://andromonoecious.jopebe.cn
http://barbarism.jopebe.cn
http://asthenope.jopebe.cn
http://admiringly.jopebe.cn
http://argos.jopebe.cn
http://cannoli.jopebe.cn
http://arcady.jopebe.cn
http://append.jopebe.cn
http://anestrus.jopebe.cn
http://www.dtcms.com/a/212845.html

相关文章:

  • Python笔记:windows下编译python3.8.20
  • 股票程序化交易-使用python获取新浪财经期货行情数据
  • 如何理解Pytorch中前向传播的计算过程
  • dify-plugin-daemon的.env配置文件
  • Java 流程控制:从「小白」到「能用」的 while 循环指南
  • DAY34
  • 市场需求文档撰写
  • 超大数值减法
  • 解决论文中字体未嵌入的问题
  • STM32中的SPI通信协议
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • CMake从入门到实战:现代C++项目构建指南
  • Android组件化框架设计与实践
  • Python60日基础学习打卡D35
  • NumPy数组切片
  • 基于AI自动生成测试用例
  • 「OC」源码学习——关联属性再探索
  • leetcode 131. Palindrome Partitioning
  • 【Qt】QCustomPlot相关
  • 2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
  • 【面板数据】上市公司外资持股数据集(2005-2023年)
  • 防火墙高可用(HA)主备验证实验(eNSP)
  • TTL和死信交换机实现延迟队列
  • 4款顶级磁力下载工具,速度提升器,可以变下变播
  • 第三章 第二大脑的运作机理 整理笔记
  • 套索回归与岭回归通俗讲解
  • TCP建立连接为什么不是两次握手,而是三次,为什么不能在第二次握手时就建立连接?
  • uniapp-商城-68-shop(1-商品列表,获取数据,utils、tofixed 、parseInt的使用)
  • Python容器
  • 基于 LangChain + Chroma 实现文档向量化入库(含摘要处理 + RAG 查询):完整实战流程