QT上位机开发(QSS美化)

本文介绍了如何使用QSS对QT应用程序进行美化,类比于Web开发中的CSS,QSS可以改变控件外观。通过创建style.qss文件,分别对按钮的启用和禁用状态以及进度条的颜色变化进行美化,并在main.cpp中加载QSS文件,实现不需重新编译即可更新美化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        我们早期学习过web开发的同学都知道,web开发有三个部分,分别是html、css和java script。其中html负责控件生成和布局,css负责美化,java script负责和web后端的数据交互。今天我们说的这个qss美化,完全可以类比成web的css来看。整体上,designer处理的ui文件就类似于html,qss类似于css,c++编程则类似于java script脚本开发,这样一来,所有的概念就能都对上了。

        为了说明qss美化怎么使用,我们用上一期文章的进度条来举例说明。

1、准备style.qss

        style.qss文件,本身和css的语法也非常像。如果我们对qt默认的控件外观不是很满意,那就可以通过自己编写style.qss文件的方式,来进行调整和补充。当然,过程中大家也可以换成其他的文件名字,不一定非要是style.qss。这种qss的修改完全是通过脚本来完成的,哪怕qt的程序已经生成好了,我们还是可以通过修改style.q

### 如何使用 Qt 进行上位机软件开发 #### 使用 Qt 的基础知识 Qt 是一种跨平台的应用程序框架,广泛用于图形界面应用程序的开发。它提供了丰富的类库支持多种功能模块,包括 GUI 组件、网络通信、数据库操作以及串口通信等[^2]。 #### 串口通信实现 对于上位机中的串口通信需求,可以参考具体的教程和示例代码来完成基本的功能构建。以下是基于 Qt 实现串口通信的一个简单例子: ```cpp #include <QSerialPort> #include <QDebug> void setupSerialPort(QSerialPort &serial) { serial.setPortName("COM3"); // 设置端口号 serial.setBaudRate(QSerialPort::Baud9600); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 数据位数 serial.setParity(QSerialPort::NoParity); // 奇偶校验 serial.setStopBits(QSerialPort::OneStop); // 停止位 serial.setFlowControl(QSerialPort::NoFlowControl); // 流控制 if (!serial.open(QIODevice::ReadWrite)) { // 打开串口 qDebug() << "Failed to open port"; } else { qDebug() << "Port opened successfully"; } } void readFromSerialPort(QSerialPort &serial) { QByteArray data = serial.readAll(); // 读取数据 while (serial.waitForReadyRead(100)) { // 等待更多数据到来 data.append(serial.readAll()); } qDebug() << "Received:" << data; } ``` 上述代码展示了如何配置并打开一个串口设备,并从中读取数据[^1]。 #### TCP/IP 协议应用实例 如果需要通过网络协议与下位机或其他服务器进行交互,则可以通过 `QTcpSocket` 类来进行连接管理。下面是一个简单的客户端模式下的套接字初始化过程: ```cpp #include <QTcpSocket> class MyTcpClient : public QObject { Q_OBJECT public: explicit MyTcpClient(QObject *parent = nullptr); private slots: void connected(); void disconnected(); void readyRead(); private: QTcpSocket *socket; }; MyTcpClient::MyTcpClient(QObject *parent):QObject(parent), socket(new QTcpSocket(this)){ connect(socket, SIGNAL(connected()), this, SLOT(connected())); connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected())); connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead())); socket->connectToHost("127.0.0.1", 12345); if(!socket->waitForConnected(5000)) qWarning()<<"Error: "<<socket->errorString(); } void MyTcpClient::connected(){ qDebug()<<"Connected!"; } void MyTcpClient::disconnected(){ qDebug()<<"Disconnected!"; } void MyTcpClient::readyRead(){ QString message=QString::fromUtf8(socket->readAll()); qDebug()<<message; } ``` 此部分实现了基础的TCP 客户端逻辑,能够监听服务端返回的消息并打印出来[^3]。 #### 数据库集成 当涉及到本地存储或者远程访问时,利用 SQLite 或 MySQL 可以为用户提供持久化解决方案。这里给出一段关于SQLite使用的片段作为示范: ```sql CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INT DEFAULT 0 ); INSERT INTO users(name,age) VALUES('Alice',30); SELECT * FROM users WHERE age > 25; ``` 以上 SQL 脚本创建了一个名为users的新表,并向其中插入了一条记录最后查询大于特定年龄的所有用户信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值