第5章 浅尝Qt其他核心模块

面试篇——Qt开发库,Linux标准库,Windows API浅尝 Qt 是一个跨平台的 C++ 应用程序开发框架,广泛用于开发图形用户界面(GUI)应用程序,同时也支持非图形的开发工作,如网络、数据库、线程等功能。 阅读详情

第5章 浅尝Qt其他核心模块

Qt 不仅仅局限于传统的桌面界面开发,它还集成了许多系统通信和现代前端技术支持模块,包括进程间通信的 Qt D-Bus、声明式 UI 的 QML、以及高性能、响应式的 Qt Quick。本章将初步探索这些模块的应用场景和实现机制。


5.1 Qt D-Bus

5.1.1 D-Bus简介与Qt支持

D-Bus(Desktop Bus)是 Linux 和 UNIX 系统上广泛使用的进程间通信(IPC)机制。其核心思想是通过总线将多个进程连接起来,使它们能够互相发送消息。

Qt 提供了 QtDBus 模块来支持 D-Bus 通信,主要类包括:

  • QDBusConnection:用于建立和管理连接
  • QDBusInterface:表示远程对象接口
  • QDBusMessage:封装通信消息
  • QDBusAbstractAdaptor:用于暴露服务

D-Bus 通常有两种类型的总线:

  • 系统总线:供系统服务使用,如 NetworkManager
  • 会话总线:供用户程序间通信,常用于桌面应用
5.1.2 使用Qt实现进程间通信

服务端(提供者)注册对象到 D-Bus:

QDBusConnection connection = QDBusConnection::sessionBus();
connection.registerObject("/com/example/MyService", &myObject);
connection.registerService("com.example.MyService");

其中 myObject 是用户自定义 QObject 派生类,定义了可被调用的 slot。

客户端调用接口:

QDBusInterface iface("com.example.MyService",
                     "/com/example/MyService",
                     "", QDBusConnection::sessionBus());

QDBusReply<QString> reply = iface.call("getStatus");
if (reply.isValid())
    qDebug() << "Status:" << reply.value();

可通过 qdbusviewer 工具查看注册服务和接口。

5.1.3 案例:Linux下D-Bus服务注册

服务端示例类:

class MyService : public QObject {
    Q_OBJECT
public slots:
    QString getStatus() { return "Running"; }
};

在主函数中:

MyService service;
QDBusConnection::sessionBus().registerObject("/com/example/MyService", &service);
QDBusConnection::sessionBus().registerService("com.example.MyService");

客户端通过 D-Bus 即可调用 getStatus()。这类架构在桌面组件集成、服务调度、配置传递中极具价值。


5.2 Qt QML

5.2.1 QML语法与对象模型

QML(Qt Meta Language)是 Qt 提供的一种声明式语言,适合用于构建流畅、动态和响应式的用户界面。

基本语法风格:

Rectangle {
    width: 200; height: 100
    color: "lightblue"

    Text {
        anchors.centerIn: parent
        text: "Hello QML"
        font.pixelSize: 20
    }
}

每个组件是一个对象,可嵌套子对象,通过属性绑定和信号槽构建行为。

常用组件:

  • Rectangle、Text、Image
  • MouseArea(交互)
  • Timer(定时行为)
  • ListView(列表视图)
5.2.2 QML与C++交互机制

QML 与 C++ 可通过以下方式交互:

  1. 暴露 C++ 对象到 QML:
QQmlApplicationEngine engine;
MyController controller;
engine.rootContext()->setContextProperty("myCtrl", &controller);

QML 中即可使用 myCtrl 调用 C++ 的 Q_INVOKABLE 方法或属性。

  1. 注册类型供 QML 实例化:
qmlRegisterType<MyData>("MyApp", 1, 0, "MyData");

在 QML 中:

import MyApp 1.0

MyData {
    name: "Qt"
}
  1. 信号与槽互通:

QML 的 signal 可与 C++ 的 slot 连接,反之亦然。可通过 connect() 或 QML 的 JavaScript Connections {} 模块完成。

5.2.3 QML界面与逻辑分离实战

示例:使用 QML 做 UI,C++ 管理逻辑。

QML 文件:

Rectangle {
    width: 300; height: 200
    Button {
        text: "Fetch"
        onClicked: myCtrl.fetchData()
    }
}

C++ 控制器类:

class Controller : public QObject {
    Q_OBJECT
public:
    Q_INVOKABLE void fetchData() {
        // 调用网络、数据库等逻辑
    }
};

此架构中,前端由 QML 完成展示与交互逻辑,后端业务由 C++ 处理,符合现代 MVVM 架构思想。


5.3 Qt Quick

5.3.1 Quick控件与布局管理

Qt Quick 是基于 QML 的 UI 框架,支持动态布局与高性能渲染。

基础控件包括:

  • Text, Rectangle, Image
  • Button, TextInput, ListView

布局系统使用 anchors 与 Layout 类:

ColumnLayout {
    spacing: 10
    Button { text: "A" }
    Button { text: "B" }
}

使用 anchors 可以实现自适应布局:

Rectangle {
    anchors.fill: parent
    color: "white"
}
5.3.2 动画与状态绑定

Qt Quick 最大的优势在于支持流畅的动画:

Rectangle {
    width: 100; height: 100
    color: "blue"

    MouseArea {
        anchors.fill: parent
        onClicked: rect.state = rect.state === "big" ? "" : "big"
    }

    states: State {
        name: "big"
        PropertyChanges { target: rect; width: 200; height: 200 }
    }

    transitions: Transition {
        NumberAnimation { properties: "width,height"; duration: 500 }
    }
}

通过 states 和 transitions 可完成复杂 UI 状态管理。

5.3.3 Qt Quick Controls与移动端UI开发

Qt Quick Controls 2 是适用于移动端和嵌入式设备的控件库,风格现代、性能优秀。

典型组件:

  • ApplicationWindow, ToolBar, Drawer
  • Button, Slider, Switch, Dialog
ApplicationWindow {
    title: "Quick App"
    width: 360; height: 640
    visible: true

    Button {
        anchors.centerIn: parent
        text: "Hello"
    }
}

该系统支持主题皮肤、设备适配、触控优化,非常适合构建 Android、iOS 甚至嵌入式 UI。

移动端开发实践建议:

  • 使用 Screen.pixelDensity 动态适配 DPI
  • 使用 StackView 管理页面堆栈
  • 避免使用太多嵌套动画影响性能
PyQt5的QtWidgets模块介绍 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考PyQt5的QtWidgets模块包含了很多类,用于创建GUI应用程序的各种控件和窗口部件。其中一些主要的类包括:QApplication:应用程序类,负责管理应用程序的控制流程和事件循环。QMainWindow:主窗口类,提供了一个应用程序的主界面。QWidget:窗口部件类,是所有用户界面元素的基类。 阅读详情

相关推荐

初学QT(二):QGui模块(一):QWidget

QT的图形化模块相关类库的基本知识之QWidget~

weixin_70339595的博客 1348

【QT教程】QT6 Widgets深入剖析

Widgets的概念与分类Widgets的概念与分类在QT6开发环境中,小部件(Widgets)是构成用户界面的基本元素。QT6提供了一个丰富的库,用于创建桌面、移动和嵌入式应用程序的用户界面。本节将详细介绍小部件的概念和分类。Widgets的概念小部件是图形用户界面(GUI)编程中的一个重要概念。它是构成用户界面的基本元素,可以是按钮、文本框、标签、滑动条等。在QT中,小部件是一个拥有绘制和事件处理功能的对象。通过组合和使用这些小部件,开发者可以创建出功能丰富、界面友好的应用程序。

QT性能优化QT原理源码QT界面美化 2902

Ubuntu22.04下QtCreator中文输入终极解决方案:手动编译fcitx-qt5插件全记录

本文详细记录了在Ubuntu 22.04系统中,通过手动编译fcitx-qt5插件,彻底解决Qt Creator中文输入难题的全过程。文章从问题根源分析入手,提供了完整的编译环境准备、源码配置、常见错误解决方案,并涵盖了Qt5与Qt6双版本插件的编译与部署指南,旨在帮助开发者一劳永逸地实现流畅的中文输入体验。

5b6n7m8的博客 764

QT知识:Qt Widgets小部件类【01】

因为QWidget类本身含有的属性、方法多,而我们经常使用这个类,所以就准备开个系列来一点点介绍这个类。

gongdiwudu的专栏 8418

VS2013搭配Qt5.12完整安装指南:从下载到配置避坑全流程

本文提供了一份详尽的VS2013搭配Qt5.12的完整安装与配置指南。针对企业级稳定开发需求,重点解析了版本选择、离线资源获取、Qt Visual Studio Tools插件部署、环境变量调校及常见编译与运行时问题的解决方案,旨在帮助开发者高效搭建可靠的C++/Qt开发环境。

weixin_29313239的博客 95

拒绝弹窗尴尬!Qt5中QDialog蒙版组件的完整封装与复用指南

本文深入探讨了在Qt5中封装高复用性QDialog蒙版组件的完整方案。通过组件化设计、单例模式应用及全局事件过滤,实现了界面遮罩的自动显示与智能层级管理,有效提升桌面应用的专业交互体验与代码复用率。

weixin_29197699的博客 187

第6章 浅尝Qt附加模块(不同版本有区别)

Qt 的 Network 模块(QtNetwork)为网络通信提供了强大的支持,适用于开发需要 HTTP 请求、Socket 连接、文件传输等功能的应用程序。本章将详细讲解 Qt Network 模块的核心功能和实际应用,帮助开发者构建高效、稳定的网络应用。

weison_x的博客 491

C C++最全QT使用Openssl实现RSA加解密_qt rsa,2024年最新深入理解C C++的核心知识点

提取码:jg82。

2401_84975245的博客 1465

目录 《Qt精通之路》

1.3 第一个Qt程序:Hello World。2.5 高级组件:图形视图与自定义绘制。6.3 HTTP通信与REST API。8.5 从Qt 5迁移到Qt 6的实践。2.2 输入组件:按钮、文本框、滑块。2.3 数据显示组件:表格、树状视图。6.5 WebSocket与实时通信。2.4 容器组件:布局管理与容器类。7.1 案例一:简单的文本编辑器。7.5 Qt实践总结与优化建议。7.2 案例二:网络聊天应用。4.5 图像处理与格式支持。5.5 本地化与国际化支持。1.1 Qt的起源与特点。

weison_x的博客 459

设计师组件属性编辑窗口中的QWidget类属性详解Python

QWidget类是在PyQt5.QtWidgets模块中定义的,是所有用户界面对象的基类,包括窗口和小部件。在Designer中,你可以轻松编辑QWidget组件的各种属性。除此之外,你还可以通过Designer来编辑依托于QWidget类的组件属性。以上就是QWidget类的一些主要属性,通过这些属性的设置,你可以进一步控制和调整Qwidget类相关属性,实现更丰富的交互和组件效果。当你添加一个组件到窗口中时,你需要设置组件的大小策略。这个属性与上一个属性相反,可以将组件的最大尺寸限制在某个范围内。

qq_39605374的博客 298

Win11内核隔离无法打开的解决方案详解

内核隔离问题的解决需遵循"先硬件后软件"的排查原则,90%以上的案例可通过驱动清理或外设断开解决。对于必须禁用该功能的用户,建议定期使用Windows Defender进行全盘扫描,并保持系统更新至最新版本。技术决策需在安全性和兼容性之间取得平衡,本文提供的多维解决方案可帮助用户构建更稳定的Windows 11使用环境。

mmoo_python的博客 4826

PyQt5 + Qtdesigner 主要模块介绍及教程(2),2024华为Python面试真题解

QtCore模块——涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及的时间、文件、目录、数据类型、文本流、链接、QMimeData、线程或进程等对象。QtNetwork模块——包含了用于进行网络编程的类库,通过提供便捷的TCP/IP及UDP的C/S代码集合,使得基于Qt的网络编程更容易。QtGui模块——涵盖了多种基本图形功能的类,包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面、字体和文本类。QtWebKit模块——包含了用于实现基于WebKit2的网络浏览器的类库。

m0_74931199的博客 878

WRF实战:自定义Vtable解析ECMWF海温数据的关键步骤与技巧

本文详细介绍了在WRF模型中自定义Vtable以解析ECMWF海温数据的关键步骤与技巧。通过解剖GRIB文件、编写自定义Vtable条目以及配置METGRID.TBL,解决了ECMWF数据与WRF模型对接的难题,为海洋气象和台风模拟研究提供了高精度数据输入方案。

weixin_29279101的博客 335

Qt for Python开发指南:从PySide6入门到应用打包部署

桌面应用开发是软件开发中的重要领域,它涉及创建运行在用户本地计算机上的图形界面程序。其核心原理是通过GUI框架构建用户界面,处理事件循环以实现交互响应。在Python生态中,GUI开发的价值在于能够利用Python的简洁语法和丰富库资源快速构建跨平台应用。PySide6作为Qt官方Python绑定,采用LGPL协议解决了商业授权问题,为开发者提供了强大的Qt6框架能力。通过信号与槽机制实现对象间通信,结合多线程处理防止界面卡顿,开发者可以构建专业级桌面应用。本文以构建文本编辑器为例,详细解析PySide6模

weixin_34195546的博客 392

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

MCU_HOT的博客 1万+

微分中值定理

文章目录证明根的存在性证明不等式微分中值定理有关的证明题解题方法题目1题目2题目3题目4题目5题目6题目7题目8(难) 微分中值定理:把函数改变量与一点的导数值联系起来 中值定理意义:将函数与导数联系起来 证明根的存在性 证明根的存在性:零点定理和罗尔定理 由于无法说明两端点异号,所以想罗尔定理 构造一个辅助函数,这个辅助函数的导数为要证的方程 这个辅助函数在两端点值相等,说明辅助函数的导数在0到1内存在0点。 这也就是为什么要构造一个导数为要证明的方程的原因 证明不等式 题目中出现了两点函

sparky的博客 4905

2024年C C++最新Qt学习笔记一_qt 如何写 &lt;&lt;,2024C C++面试

2 鼠标动作->转换成相应对象->交给event()函数->事件处理器 event()不直接处理事件,而是按照事件对象的类型分派给特定的事件处理函数(switch)2 处理关闭窗口事件,接收事件e->accept(),事件不会往下传递,不关闭窗口,忽略事件e->ignore(),事件传递给父组件。6 QString格式化Qstring(“(%1,%2)”).arg(e->x()).arg->y());1 只要是控件继承于QWidget,就有event(),控件都有event(),我们只需重写。

2401_84975241的博客 743

(2)NPW(监控片)【中】---业务场景精讲

自己在日常工作当中,由于非产线人员出生,对NPW的知识一直一知半解,业务场景认识的不够透彻,做系统的时候很难理解甲方的NPW业务应用,特收集了不少关于NPW的一些业务场景,下面都是一些摘抄,大家关注我标红标粗的部分,

阿拉伯梳子的专栏 1586

网络安全最新Qt 5(1),2024年最新成功入职字节跳动

Qt的网络模块,尤其是。

2401_84281588的博客 777

Android 自动亮度

/则需要从BrightnessConfigure类中读取两个数组源:config_autoBrightnessLevels和config_autoBrightnessDisplayValuesNits。) 或知道其在DisplayPowerController()构造的时候初始化的。曲线设置好了,就应该扔代码里跑起来,模型建起来了,这个过程是咋样的呢?//它将负责曲线的创建,自动背光值的计算等。通过搜索配置关键词(

Android 1485

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2596

2024年C C++最新电梯模拟程序_elevator simulationutensi,项目实践

简介:这是一个在Qt5中构建的小型电梯模拟程序。目前,它仍然存在一个小bug,它总是由最近的呼叫面板信号引起的。还有一件事,当系统准备好启动时,必须首先单击启动按钮,否则将发生意外的错误。第三步:将.h添加进你项目中的Headers(注:头文件),将.cpp添加进你的Sources(源文件),将.ui文件添加进你的Forms(界面)中。状态机由门和电梯两部分组成,实时扫描外界面板控制信号和内派信号。第二步:删除项目所有.cpp和.h和.ui文件。第四步:构建你的项目并运行。电梯的状态机和控制系统分离。

2401_84978595的博客 1137

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 991

Qt开发必备:QZipWriter/QZipReader压缩解压实战避坑指南(附完整Demo)

本文为Qt开发者提供了一份关于QZipWriter和QZipReader的实战避坑指南。详细解析了私有模块的配置、跨平台编译、中文乱码处理等核心难点,并提供了可直接集成的模块化工具类代码,帮助开发者构建健壮、高效的压缩解压功能。

qsc90123456的博客 234

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

网络安全最新Qt 5,零基础网络安全入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。因篇幅有限,仅展示部分资料。

2401_84544854的博客 421

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

有哪些信号 qt_每天10分钟,木辛老师带着你初识PyQt中的信号和槽的机制,快来吧...

我们学习了通过水平布局、垂直布局、栅格布局等进行UI页面的设计实现的知识,这一节里边,我们要给这些美观的控件添加一些动作。请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~让我们通过实战,来进一步巩固学过的知识吧。信号和槽关联信号(signal)和槽(slot)是Qt的核心机制。在创建事件循环之后,通过建立信号和槽的连接就可以实现对象之间的通信。当信号...

weixin_34530398的博客 158

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 第4章 深入Qt核心模块
下一篇: 第6章 浅尝Qt附加模块(不同版本有区别)
weisonx
博客等级 码龄9年 155粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

weisonx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值