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

响应式网站建站价格网站如何做会员登录页面

响应式网站建站价格,网站如何做会员登录页面,手机网站建设可信赖,做网站唐山在Linux系统中使用Qt4查看已配对的蓝牙设备信息,可以基于DBus与BlueZ(Linux下的蓝牙协议栈)进行交互。以下是一个实现方案: 1. 引入必要的库和头文件 确保项目中包含DBus相关的头文件,并链接QtDBus模块: …

在Linux系统中使用Qt4查看已配对的蓝牙设备信息,可以基于DBus与BlueZ(Linux下的蓝牙协议栈)进行交互。以下是一个实现方案:

1. 引入必要的库和头文件

确保项目中包含DBus相关的头文件,并链接QtDBus模块:

cpp

#include <QDBusInterface>
#include <QDBusReply>
#include <QDBusObjectPath>
#include <QVariantMap>

2. 定义DBus常量

用于连接BlueZ服务的DBus接口、服务名和路径:

cpp

#define BLUEZ_DBUS_SERVICE  "org.bluez"
#define BLUEZ_DBUS_PATH "/org/bluez/hci0"
#define BLUEZ_DBUS_IF "org.bluez.Adapter1"

3. 获取已管理对象(Managed Objects)

通过调用org.freedesktop.DBus.ObjectManager接口的GetManagedObjects方法,可以获取所有蓝牙设备的信息。

cpp

QVariantMap getManagedObjects()
{QDBusInterface manager(BLUEZ_DBUS_SERVICE, "/","org.freedesktop.DBus.ObjectManager", QDBusConnection::systemBus());QDBusReply<ManagedObjectList> reply = manager.call("GetManagedObjects");if (!reply.isValid()) {qWarning() << "Failed to get managed objects:" << reply.error().message();return QVariantMap();}ManagedObjectList objects = reply.value();QVariantMap result;foreach (const QDBusObjectPath &path, objects.keys()) {InterfaceList interfaces = objects.value(path);foreach (const QString &interface, interfaces.keys()) {result[path.path()] = interfaces.value(interface);}}return result;
}

需要自定义类型 ManagedObjectList 和 InterfaceList

cpp

typedef QMap<QString, QVariantMap> InterfaceList;
typedef QMap<QDBusObjectPath, InterfaceList> ManagedObjectList;Q_DECLARE_METATYPE(InterfaceList)
Q_DECLARE_METATYPE(ManagedObjectList)

4. 过滤已配对的蓝牙设备

遍历返回的对象,提取出org.bluez.Device1接口中的设备信息,并筛选出已配对的设备。

cpp

void getPairedDevices(BluetoothDeviceList_t &deviceList)
{QVariantMap objects = getManagedObjects();QSet<QString> uniqueAddresses; // 去重foreach (const QString &path, objects.keys()) {QVariantMap deviceProps = objects[path].toMap();if (deviceProps.contains("Name") && deviceProps.contains("Address") &&deviceProps.contains("Paired")) {QString name = deviceProps["Name"].toString();QString address = deviceProps["Address"].toString();bool paired = deviceProps["Paired"].toBool();if (!name.isEmpty() && !uniqueAddresses.contains(address) && paired) {uniqueAddresses.insert(address);BluetoothDevice_t device;device.address = address;device.Name = name;device.Paired = paired;device.Connected = deviceProps["Connected"].toBool();device.Icon = deviceProps["Icon"].toString();deviceList << device;}}}
}

5. 数据结构定义

定义蓝牙设备的数据结构:

cpp

struct BluetoothDevice_t {QString address;QString Name;QString Icon;QString Alias;bool Connected;bool Paired;
};typedef QList<BluetoothDevice_t> BluetoothDeviceList_t;

6. 注册元类型

为了让Qt支持跨线程传递自定义结构体,需要注册元类型:

cpp

qRegisterMetaType<BluetoothDevice_t>("BluetoothDevice_t");
qRegisterMetaType<InterfaceList>("InterfaceList");
qRegisterMetaType<ManagedObjectList>("ManagedObjectList");

7. 展示设备列表

将获取到的设备列表展示在QTableWidget中:

cpp

void setPairedDeviceList(const BluetoothDeviceList_t &deviceList)
{int row_count = deviceList.count();if (row_count <= 0) return;ui->tableWidget->setRowCount(row_count);ui->tableWidget->setColumnCount(1);for (int row = 0; row < row_count; ++row) {const BluetoothDevice_t &device = deviceList.at(row);QTableWidgetItem *item = new QTableWidgetItem(device.Name);item->setData(Qt::UserRole, device.address);item->setData(Qt::UserRole + 1, device.Paired);item->setData(Qt::UserRole + 2, device.Connected);QBrush brush = QColor(0, 0, 0);if (device.Connected && device.Paired) {brush = QColor(0x00DC00); // 绿色} else if (device.Paired) {brush = QColor(0x3E81DA); // 蓝色}item->setForeground(brush);ui->tableWidget->setItem(row, 0, item);}ui->tableWidget->selectRow(0);
}

8. 完整流程

  • 初始化UI:设置表格样式、隐藏表头等。
  • 获取设备列表:调用getPairedDevices()
  • 设置设备列表:调用setPairedDeviceList()显示到界面上。

示例运行效果

该程序会列出所有已配对的蓝牙设备名称和地址,并根据是否连接显示不同的颜色。


如需进一步扩展功能,例如连接/断开设备发送文件等,可以通过调用BlueZ提供的DBus接口实现


文章转载自:

http://TPetzhRX.fmgwx.cn
http://xao3Q1f6.fmgwx.cn
http://RUHHtAUl.fmgwx.cn
http://2NjQT3kc.fmgwx.cn
http://fhjqQAvw.fmgwx.cn
http://CgZHxaXX.fmgwx.cn
http://eZMdBR21.fmgwx.cn
http://mVwWk4NE.fmgwx.cn
http://U1OBlbXv.fmgwx.cn
http://ncj4rW6j.fmgwx.cn
http://Ph5pmATL.fmgwx.cn
http://VC7JAm48.fmgwx.cn
http://RxvsLLRn.fmgwx.cn
http://SQdTUF1m.fmgwx.cn
http://lVvbaF1J.fmgwx.cn
http://VyL1EHCL.fmgwx.cn
http://TfESH2jN.fmgwx.cn
http://mslXnNVe.fmgwx.cn
http://1qULJC4c.fmgwx.cn
http://NrmttEqF.fmgwx.cn
http://mHIZ4uOj.fmgwx.cn
http://dyESA8rx.fmgwx.cn
http://uqIb3rxc.fmgwx.cn
http://psEhM4vn.fmgwx.cn
http://CK4FddXv.fmgwx.cn
http://3c4URivz.fmgwx.cn
http://feiwHPFL.fmgwx.cn
http://ebwRvMJd.fmgwx.cn
http://3DciiE0n.fmgwx.cn
http://4qD0UbBT.fmgwx.cn
http://www.dtcms.com/wzjs/702128.html

相关文章:

  • 上海大型网站开发公司dede网站地图地睛
  • 温州个人网站建设js网站开发视频
  • 网站建设专用术语产品网络营销策划方案
  • 达州住房和城乡建设厅网站今天重大新闻摘抄
  • 机械 网站源码如何查看网站开发者
  • 深圳好蜘蛛网站建设公司查网站域名
  • 企业网站建设课程体会网站开发公司的推广费用
  • 宜昌模板网站建设淘宝店招图片大全免费
  • 网站运营推广怎么做建立主题网站的顺序一般是
  • 网上下载的网站后台安全吗松松软文平台
  • 网站建设工作组怎么注册自己的网站域名
  • 建设官方网站登录社交手机网站开发
  • 怎么样推广自己的网址西安网站seo方法
  • 兰州最好的网站建设公司哪家好开网站 主机 服务器
  • 宁波做外贸网站建设西安seo霸屏
  • 网页设计的价格网站优化合同模板
  • 做网站的是什么职位一般网站建设流程
  • 制作企业免费网站制作网站哪家专业
  • 保定网站建设培训班wordpress专题修改
  • 池州网站建设哪家好室内装修设计网站推荐
  • 公司推广网站建设话术国外服务器免费ip地址
  • 物流网站设计c 做的博客网站
  • 清苑住房和城乡建设局网站aspnet校友录网站开发
  • 资源网站如何做做网站的个人心得
  • 扬州建设教育信息网站wordpress动画插件下载
  • 企业网站模板免费网页游戏吃显卡还是cpu
  • seo整站优化技术培训福贸外贸论坛
  • ppt下载免费网站小程序免费制作平台用
  • 搜搜网站收录提交入口.asp网站开发
  • asp.net做织梦网站网站开发岗位