关于Vs+Qt出现ui界面添加的控件无法正常读取和显示可能的解决方法

这几天一直被一个问题困扰,就是在Ui界面添加的控件无法正常显示,最后发现是因为

我改了ui文件名而头文件中未修改新的ui头文件导致的。

解决方法:

第一步:因为Vs有很强大的补全和查找功能,可以利用起来查找ui头文件的存放地点。

第二步:找到相应的文件夹,删除不必要的。

第三步:   在相应的程序头文件中修改(根据自己情况修改即可)

#include "ui_TuXiang.h"

 

总结:虽然接触Vs的时间不是很长,但我觉得这是一个很严谨很方便的编译器。所以在修改一些文件的名字时应该格外小心,查错时也要有意识地往这方面想。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的要求,以下是一份基于Qt的代码示例,用于读取DHT11温湿度传感器数据,并将其显示UI界面上: ```cpp #include <QCoreApplication> #include <QTimer> #include <QDebug> #include <wiringPi.h> #include "dht11.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 初始化WiringPi库,需要在使用GPIO前调用 wiringPiSetup(); // 创建DHT11对象,参数为GPIO引脚编号 DHT11 dht11(7); // 创建定时器,定时读取显示温湿度数据 QTimer timer; QObject::connect(&timer, &QTimer::timeout, [&]() { // 读取温湿度数据 int ret = dht11.read(); if (ret != DHT11::SUCCESS) { qDebug() << "Failed to read DHT11 data, error code:" << ret; return; } // 在UI界面显示温湿度数据 qDebug() << "Temperature:" << dht11.temperature() << "°C, Humidity:" << dht11.humidity() << "%"; }); timer.start(2000); // 每2秒读取一次数据 return a.exec(); } ``` 上述代码使用了一个名为`DHT11`的自定义类,用来封装DHT11传感器的操作。您需要将`dht11.h`和`dht11.cpp`文件添加Qt项目,并按照以下方式定义`DHT11`类: ```cpp #ifndef DHT11_H #define DHT11_H class DHT11 { public: enum ErrorCode { SUCCESS = 0, ERROR_TIMEOUT, ERROR_CHECKSUM, ERROR_GPIO }; DHT11(int pin); int read(); float temperature() const; float humidity() const; private: int m_pin; float m_temperature; float m_humidity; }; #endif // DHT11_H ``` ```cpp #include "dht11.h" #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <stdbool.h> #include <time.h> DHT11::DHT11(int pin) : m_pin(pin) , m_temperature(0.0f) , m_humidity(0.0f) { pinMode(m_pin, OUTPUT); } int DHT11::read() { // 发送起始信号 digitalWrite(m_pin, LOW); delay(18); digitalWrite(m_pin, HIGH); delayMicroseconds(40); pinMode(m_pin, INPUT); // 等待DHT11响应 uint32_t start = micros(); while (digitalRead(m_pin) == HIGH) { if (micros() - start > 100) { return ERROR_TIMEOUT; } } // 读取数据 uint8_t buffer[5] = {0}; for (int i = 0; i < 40; i++) { uint32_t t = micros(); while (digitalRead(m_pin) == LOW) { if (micros() - t > 100) { return ERROR_TIMEOUT; } } buffer[i/8] <<= 1; if (micros() - t > 40) { buffer[i/8] |= 1; } } // 验证校验和 if (buffer[0] + buffer[1] + buffer[2] + buffer[3] != buffer[4]) { return ERROR_CHECKSUM; } // 保存温度和湿度值 m_humidity = (float)buffer[0]; m_temperature = (float)buffer[2]; return SUCCESS; } float DHT11::temperature() const { return m_temperature; } float DHT11::humidity() const { return m_humidity; } ``` 这份代码通过定时器来读取DHT11传感器的温湿度数据,并在UI界面上用`qDebug()`函数打印出来。您可以根据您的需求,将数据显示Qt的`QLabel`或`QLineEdit`控件,或者自定义一个`QWidget`来显示数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值