qt4 创建dialog-----vs vc6.0

VC++6.0项目精讲:从Win32到MFC,掌握Windows桌面开发核心 Windows桌面应用程序开发的核心在于理解其底层运行机制,这通常涉及对Windows API的调用、消息循环的处理以及运行时库的依赖。消息循环是Windows程序的心脏,它负责从系统队列中获取并分发用户输入和系统事件,驱动程序运行。动态链接库(DLL)和运行时库(如MSVCRT)的管理则是确保程序可移植性和部署成功的关键技术,它们解决了代码复用和依赖问题,这也是现代应用(如Flutter桌面端)打包时仍需处理VC++库依赖的根本原因。掌握这些原理,对于维护遗留系统或理解现代框架的底层封装都极具价值。本文将 阅读详情
1.代码创建
创建一个MainWindow的qt程序,拖一个pushButton到MainWindow上,其click slot如下
void MainWindow::on_pushButton_clicked()
{
QDialog *dd=new QDialog;
dd->show();
}
在点击此pushButton会弹出一个Dialog 对话框,其各个属性都默认。
当然在dd->show()之前可以在dialog上添加一个label。即如下
void MainWindow::on_pushButton_clicked()
{
QDialog *dd=new QDialog;
QLabel *label=new QLabel(dd);//父窗口是dd,需要#include<QLabel>
label->setText("i'm label");
dd->show();
}
2.使用ui,添加Qt Designer From
上面1.是手动写代码创建一个dialog,如果想向dialog里面添加控件的话,都需要手动写代码,不方便。
添加一个Qt Designer From,模板选择Dialog with Buttons Right,即可创建一个form即dialog.ui
此时编译一下,在工程目录内会出现一个ui_dialog.h,
再拖一个pushButton到MainWindow上,其click slot如下
void MainWindow::on_pushButton_2_clicked()
{
    QDialog *dd=new QDialog();
    Ui_Dialog *ui=new Ui_Dialog;//构造Ui_Dialog对象,需要#include"ui_dialog.h"
    ui->setupUi(dd);//为dd指定ui对象
    dd->show();
}
说明几点:
ui_dialog.h源码类似如下,
/********************************************************************************
** Form generated from reading UI file 'dialog.ui'
**
** Created: Wed Nov 16 14:45:05 2011
**      by: Qt User Interface Compiler version 4.6.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_DIALOG_H
#define UI_DIALOG_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QDialogButtonBox>
#include <QtGui/QHeaderView>
#include <QtGui/QPushButton>

QT_BEGIN_NAMESPACE

class Ui_Dialog
{
public:
    QDialogButtonBox *buttonBox;
    QPushButton *pushButton;

    void setupUi(QDialog *Dialog)
    {
        if (Dialog->objectName().isEmpty())
            Dialog->setObjectName(QString::fromUtf8("Dialog"));
        Dialog->resize(400, 300);
        buttonBox = new QDialogButtonBox(Dialog);
        buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
        buttonBox->setGeometry(QRect(290, 20, 81, 241));
        buttonBox->setOrientation(Qt::Vertical);
        buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
        pushButton = new QPushButton(Dialog);
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        pushButton->setGeometry(QRect(230, 160, 98, 27));

        retranslateUi(Dialog);
        QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept()));
        QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject()));

        QMetaObject::connectSlotsByName(Dialog);
    } // setupUi

    void retranslateUi(QDialog *Dialog)
    {
        Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
        pushButton->setText(QApplication::translate("Dialog", "PushButton", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_DIALOG_H 
可以看出里面声明了一个Ui_Dialog类。此类的成员函数setupUi(QDialog *Dialog)就是用来对Dialog的画面设定的。向前面创建的dialog.ui里面拖拉控件等操作时,qt框架会在ui_dialog.h自动创建控件对应的对象并初始化。比如拖入一个pushButton 则ui_dialog.h中:
public成员中多出一个PushButton *pushButton;也可看出此成员是属于Ui_Dialog类的(而不是属于dialog)。所以在访问控件的时候需要用比如ui->pushButton;
(这点和vc不同,vc中,和拖到dialog的控件关联的对象都是dialog的成员,并且并没有
Ui_Dialog之类的类)
setupUi函数中多出几行构造控件对象并初始化的代码
pushButton = new QPushButton(Dialog);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(230, 160, 98, 27));
总之,系统dialog内的控件的创建等代码都放到了setupUi里面,程序员只需Ui_Dialog *ui=new Ui_Dialog();ui->setupUi(dd)即可。而不必象1.中那样手动写代码创建了。
3.使用ui,添加Qt Designer From Class

上面2.添加Qt Designer From仅添加了一个Ui_Dialog类(对应窗体dialog.ui),如果要使用这个dialog.ui则要先构造一个dialog  dd,再构造一个ui,再关联ui->setupUi(dd)。
也可以添加Qt Designer From Class,这样就把Ui_Dialog类和Dialog类一起创建了,并在Dialog类的构造函数中自动new ui并执行setupUi关联。如下
#include "dialog.h"
#include "ui_dialog1.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}
这样只要创建Dialog对象,则Dialog 自动会关联的对应的ui
void MainWindow::on_pushButton_3_clicked()
{
    Dialog *dd=new Dialog;//使用Qt Designer From Class新添加的类,需要#include"dialog.h"
    dd->show();
}



对比一下,在vc6.0中添加一个dialog
1.动态创建,code from msdn------和qt中的1.对应
CMyDialog* pDialog;

void CMyWnd::OnSomeAction()
{
   //pDialog initialized to NULL in the constructor of CMyWnd class
   pDialog = new CMyDialog();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if(pDialog != NULL)
   {
      BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
      if(!ret)   //Create failed.
         AfxMessageBox("Error creating Dialog");
      pDialog->ShowWindow(SW_SHOW);
   }
   else
      AfxMessageBox("Error Creating Dialog Object");
}

可见步骤是创建对象new CMyDialog然后创建资源pDialog->Create。
在qt中就不用Create资源了,应该是系统在创建对象的时候自动创建一个默认的资源并与之关联。
http://download.youkuaiyun.com/download/gouyue/2151399

2.使用资源----和qt中的3.对应
a.在resource页insert 一个对话框
b.ctrl+w,此时会弹出


如果之前没有创建选择第1个(如果之前已经创建了要关联的类,选择第2个),点击ok继续,创建一个新类


然后在需要的地方,比如
void CTtsetDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CMyDialog mydlg;//需要#include "MyDialog.h"
	mydlg.DoModal();
}




基于VC6.0+MFC的桌面考试系统设计与实现 Windows桌面应用开发中,MFC作为C++的经典界面框架,通过封装Win32 API和消息映射机制,让开发者能高效构建对话框类程序。它强调窗口与控件的交互逻辑,适合表单密集型场景。在实际工程中,常配合Access数据库和ADO技术实现数据持久化,利用随机组卷算法和自动判分逻辑提升业务效率。这类技术栈尤其适用于教学管理、在线考试等轻量级部署环境,具有无需额外运行库、拷贝即用的特点。本文将围绕一个基于VC6.0+MFC的桌面考试系统,详细拆解其登录权限、题库管理、随机组卷、在线答题与自动判分等核心模块的实现 阅读详情

相关推荐

VC6.0+MFC桌面考试系统实战:从题库到判分的完整设计

桌面应用程序开发中,MFC作为Windows API的C++封装框架,凭借其消息映射、对话框和文档视图等核心机制,长期占据Windows平台开发的重要地位。理解MFC的底层消息循环与控件交互原理,是构建稳定桌面软件的关键能力,尤其适合考试系统这类需要快速响应和严谨逻辑的业务场景。技术价值在于,即使如今开发工具繁多,MFC的工程实践仍能帮助开发者深入理解Win32编程模型。本文以一个经典的VC6.0+MFC桌面考试系统为例,从项目架构、题库解析、考试界面交互、自动判分到成绩存储,系统讲解核心模块的实现细节与常

weixin_30664615的博客 454

QT4.3.3+VC6.0安装编译过程详解

A.    安装前的准备检查你的QT4.3.3压缩包的位置,并解压。假设解压后的路径为F:/qt433,那么需要先设置环境变量,首先在“我的电脑”—“属性”---“高级”---环境变量---**的用户变量---新建,添加一个变量名为QTDIR 变量值为F:/qt433(注意:要对应qt解压后的路径),然后继续添加环境变量,变量名为QMAKESPEC,变量值为win32-msvc,在PATH变量

lelexy的专栏 2938

VC6.0 MFC计算器开发:消息映射与状态机实战详解

桌面应用开发中,事件驱动模型是理解程序运行的基石。MFC作为经典的Windows图形界面框架,通过消息映射机制将控件事件绑定到处理函数,让开发者能够直观掌握界面与逻辑的交互方式。在状态管理方面,采用状态机设计比表达式解析更贴合按键式交互场景,尤其适合计算器这类需要连续运算和边界处理的工具。VC6.0搭配MFC的对话框工程,不仅适合课程设计与练手,还能通过字符集处理、控件布局和静态链接发布等环节,覆盖桌面开发的关键技能。本文以计算器为例,从对话框搭建、消息映射编写到状态变量流转,逐步解析MFC工程中典型的问题

weixin_28842367的博客 275

用VC打开qt的工程

打开QT的命令行工具(例如:Qt 5.7 32-bit for Desktop (MSVC 2013)),cd到工程所在目录(有.PRO的那个目录),然后执行qmake -tp vc命令,就会生成一个.vcproj,用VS打开就行了。 ...

江南雨 1004

VC6.0 MFC计算器开发全攻略:从对话框到消息映射的完整实践

在Windows桌面应用开发中,对话框是构建图形界面的基础容器,而消息映射则是连接用户操作与程序逻辑的桥梁。理解控件ID的命名规则、按钮消息的路由机制,以及界面刷新原理,是掌握MFC框架的关键。通过消息映射处理按钮点击、利用状态机维护运算流程,配合字符串格式化与资源管理,可以构建出功能完整且界面稳定的应用。这种经典的界面交互模式不仅适用于课程设计,也为理解现代GUI框架的事件驱动模型打下基础。本文以VC6.0环境下的MFC计算器为例,详细讲解如何创建对话框应用、绑定控件事件、实现中缀表达式求值,以及避开设防

weixin_30082367的博客 273

手把手教你用分立元件搭建自举电路:解决高端MOS驱动难题

本文详细介绍了如何用分立元件搭建自举电路,解决高端MOS驱动中的栅源极电压不足问题。通过面包板实验,逐步讲解二极管、电容等关键元件的选型与电路搭建,提供波形调试和常见问题排查方法,帮助工程师提升开关电源和电机驱动等应用的效率与可靠性。

weixin_30555125的博客 153

VC控制台运行QT生成的界面

Win VC+QT安装教程请查看我的另一篇文章《QT+VC2012安装及配置》。 以下是在VC2012控制台中使用QT5.5.1。 1 将QT的头文件和库拷出来 把需要的头文件和lib分别放进一个文件夹。 2 VC添加包目录和库目录 3 添加需要的库 要注意QT安装完后库有Release版本和Debug版本,d.dll时Debug版本,.dll是Release版本,相应的lib也要配对否则在...

发呆的程序猿 1245

BarTender破解版风险与低成本正版替代方案全解析

在工业自动化和企业信息化领域,标签打印与条形码技术是连接物理世界与数字系统的关键环节。其核心原理是通过软件驱动打印设备,将可变数据(如序列号、生产日期)与固定模板结合,生成可追溯的标识载体。这项技术的价值在于实现生产流程可视化、供应链管理精细化与质量控制自动化,广泛应用于仓储物流、制造执行、零售门店等场景。然而,软件授权合规性常成为企业成本控制的痛点,尤其面对BarTender这类行业标准工具时,部分用户可能寻求破解方案。但破解版软件通常采用内存补丁、伪造许可证等技术手段绕过验证,不仅存在法律风险,更会引发

weixin_32736961的博客 741

QT5.7+VS2013入门级使用——对话框

第一步:建立项目 至此,项目的基本创建完毕。 第二步:对话框组件设计 打开test.2_ui后会自动打开QTdesigner 注意: 没有自动打开QTdesigner 如果没打开,要设置默认打开方式, 打开时,VS出现无响应 如果打开无响应,则是部分配置文件出问题,网上有教程。 (两种情况我都碰到过,无语) 打开test_2.ui后,这里我添加了一个组件pushButton,并且进行了命名和改对象名称 接下来添加下一个对话框,作为按钮弹出用 先添加一个新类(下面的类向导也可以用的)

weixin_44461195的博客 548

告别龟速计算!用Python的fengwo模块5分钟搞定通达信COST/WINNER函数(附完整代码)

本文介绍如何使用Python的fengwo模块高效复现通达信的COST和WINNER函数,解决量化交易中的计算精度和性能问题。通过C++核心算法和多线程优化,计算速度提升显著,误差低于0.5%,并支持与通达信DLL无缝集成,适用于实盘交易策略开发。

weixin_42533751的博客 600

自动驾驶中的多传感器融合实战:用卡尔曼滤波搞定毫米波雷达与摄像头航迹对齐

本文深入探讨了自动驾驶中多传感器融合的实战技术,重点介绍了如何使用卡尔曼滤波实现毫米波雷达与摄像头的航迹对齐。通过分析传感器特性差异、时空同步挑战及工程化实现步骤,提供了包括状态向量定义、观测矩阵设计和故障检测机制在内的完整解决方案,最终实现0.15米以内的高精度航迹对齐。

weixin_28728495的博客 411

QT软件中加入新dialog

1  先在系统外新建一个dialog  例如  参数框,可以用QtDesigner做。qmake编译通过。 2  将 参数框.h      参数框.cpp    ui_参数框.h      moc_参数框.cpp四个文件放入软件系统的对应文件夹中,编译器里也要添加 3    再把  moc_参数框.cpp第一行双引号里的h文件位置更改 4(补充)  点击参数框.ui文件属性,设置好编译条件

ZGJORSON的专栏 1994

01_MySQL下载、安装与配置(以MySQL8.0.31版本为例)

1.点击下载好的mysql安装包 进入到mysql installer界面。2.选择MySQL Servers选项 一直下拉。

4820

VC6.0深度解析:从经典IDE到现代开发的迁移与思考

集成开发环境(IDE)作为软件开发的核心工具,其演进史映射了编程范式的变迁。从早期将编译器、调试器、资源编辑器深度捆绑的一体化解决方案,到如今支持智能感知、云协作的现代化平台,IDE的发展始终围绕提升开发效率与代码质量展开。在Windows平台开发史上,Visual C++ 6.0(VC6.0)曾凭借其与MFC框架的深度集成、稳定的编译器及可视化资源编辑器,成为桌面应用开发的标杆工具,深刻影响了后续开发工具的设计理念。尽管其因与现代C++标准脱节、缺乏64位支持等局限已退出主流,但理解其架构与调试技巧,对于

weixin_30439067的博客 487

Mamba实战:如何用Samba框架轻松搞定RGB-D显著性检测(附避坑指南)

本文提供了基于Samba框架进行RGB-D显著性目标检测的实战指南。详细解析了从环境配置、数据预处理到模型推理与可视化的全流程,并重点剖析了多模态数据融合中的常见陷阱与调试技巧,旨在帮助开发者高效部署这一基于Mamba的先进视觉模型,规避工程实践中的典型问题。

dapp9builder的博客 615

博途PLC如何建立与笔记本电脑端的连接?(新手必会)

对S7-1500PLC下载硬件组态或程序,需要建立PC与PLC的连接。 由于S7-1500CPU都具有PN端口,因此建立PC与S7-1500PLC的连接通常使用工业以太网来实现。 1.使用网线连接PC-PLC 使用网线,一端连接PC的以太网卡端口,另一端连接S7-1500CPU的PN端口。 2.设置本机IP地址 2.1 确认本机要设置的IP地址段 本机IP地址要和PLC程序组态IP地址段前三位保持一致,后一位使用组态中没有用到的IP地址段。如下图所示。 那么看了这个图片应该就知道了,地址应该设置成192.

weixin_42430971的博客 1万+

在Qt中使用MFC,例子很简单,多余的废话也不多说

Qt与MFC

weixin_42951026的博客 4383

字节系,ali系,ks,pdd最新抓包方案

各大厂安卓逆向

qq_38759383的博客 1145

c 如何创建一个.h头文件_C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?...

最简单的方法是用vc6新建一个Win32 Application空工程,然后添加一个cpp文件,输入(注意添加对话框资源,并且在对话框上添加一个文本框)#include#include "resource.h"// DialogProc, 枚举窗口对话框过程.int CALLBACK DialogProc( HWND hdlg, UINT uMsg, WPARAM wParam, LPA...

weixin_39632471的博客 878

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC++6.0与MFC框架:深入理解Windows桌面开发的核心机制与现代价值

消息驱动机制是Windows应用程序的基础架构,它定义了操作系统与应用程序之间通过消息队列进行通信的原理。这种机制确保了用户输入、系统事件和应用程序响应之间的高效协同,是理解GUI框架设计哲学的关键。在技术价值层面,消息驱动模型实现了界面与逻辑的解耦,为复杂交互提供了清晰的程序结构。应用场景广泛覆盖了从传统桌面软件到现代图形界面的各类程序。文档/视图架构作为数据与显示分离的经典设计模式,进一步提升了应用程序的可维护性和扩展性。Visual C++ 6.0及其MFC框架正是这些核心概念的早期完整实现,通过资源

weixin_33708432的博客 411

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC++6.0绿色精简版:工业控制与遗留系统开发实战指南

VC++6.0并非过时工具,而是Windows API底层编程、MFC消息机制与PE文件兼容性理解的关键入口。其核心价值在于支撑工控PLC、数控机床、SCADA等老旧系统的维护与二次开发,尤其在Windows 10/11 LTSC环境下保障MFC 4.2应用与winmm.lib、hid.dll等系统级API的稳定调用。通过精简运行时依赖(mfc42.dll/msvcrt.dll)、固化相对路径、原生GB2312资源编译支持,实现零注册表、免安装的绿色部署。适用于嵌入式维保、军工电力遗留系统升级及C++底层原

weixin_30843605的博客 348

深度学习工具包 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")

MFC程序嵌入QT界面的工业级实践指南

在遗留MFC桌面应用现代化改造中,'界面托管'是一种关键架构策略:将QT作为独立UI渲染层嵌入原有MFC主窗口,实现现代UI能力(如高DPI适配、矢量图形、QSS样式)与稳定业务内核的解耦。其核心原理是基于Windows原生HWND句柄绑定,通过QWindow或QWidget的winId()机制实现跨框架窗口集成,规避消息循环冲突与内存管理交叉。该方案具备强工程价值——无需重写业务逻辑、兼容Win7/Win11及4K触控屏、支持信号槽与Windows消息双通道通信。典型应用场景包括医疗设备控制台、工业PLC

weixin_34326429的博客 460

c++ builder 把最小化的程序显示出来_C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?...

最简单的方法是用vc6新建一个Win32 Application空工程,然后添加一个cpp文件,输入(注意添加对话框资源,并且在对话框上添加一个文本框)#include#include "resource.h"// DialogProc, 枚举窗口对话框过程.int CALLBACK DialogProc( HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM l...

weixin_42452460的博客 389

opencv环境变量

D:\opencv\build\x64\vc14\bin;D:\opencv\build\x64\vc14\lib;D:\opencv\build\include\opencv2@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了

sinat_32017759的博客 380

qt 程序显示文本框_C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?...

最简单的方法是用vc6新建一个Win32 Application空工程,然后添加一个cpp文件,输入(注意添加对话框资源,并且在对话框上添加一个文本框)#include#include "resource.h"// DialogProc, 枚举窗口对话框过程.int CALLBACK DialogProc( HWND hdlg, UINT uMsg, WPARAM wParam, LPA...

weixin_34982726的博客 915

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 626
上一篇: qt4 messagebox
下一篇: qt4 控件
luck_good
博客等级 码龄15年 58粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值