VC++6.0中自定义Qt类的编写和编译

QtCreator + MSVC编译器开发 Qt在Windows中的编译,一般使用两种编译器,MSVC和MinGW MinGW(Minimalist GNU for Windows):是一个GCC和GNU Binutils的原生软件端口,用于在Windows上开发原生的Microsoft Windows应用程序。MinGW和Qt Creator以及Qt installers for Windows一起发布。MSVC:微软的可视C++开发平台。在qt5.9以前,windows版本细分了一些版本,包括MinGW和MSVC,其中MSVC用的VS编译器,还 阅读详情

VC++6.0中自定义Qt类的编写和编译

原来的标题为“VC++6.0中基于Qt元对象编译器的类的编写和编译”,感觉不妥,现改为“VC++6.0中自定义Qt类的编写和编译”。

 (C)ShiShengSoft原创文章,转载请注明出处:http://blog.youkuaiyun.com/shishengsoft/


为 了使用信号和槽机制,我们将自定义类继承自QObject类,并正确书写了源代码,但通过VC++的IDE编译执行程序时,却总是出现连接错误。这其实是 由于对Qt类的一些特性不了解所致。具体描述,大家可以查看C++ GUI Programming Qt3一书中的“Qt的元对象系统”的描述。

下面我们以在VC++6.0为例,介绍如何正确编写和编译自定义的Qt类。


一、配置Qt的环境变量和msvc编译器的环境变量

1、添加Qt的环境变量:

变量名:QMAKESPEC
变量值:win32-msvc
注意,win32-msvc为Qt安装目录下mkspecs目录中的一个同名目录

变量名:QTDIR
变量值:c:/qt-win-free-msvc-3.3.3
注意,指向你的机器中Qt的安装目录

变量名:path
变量值:%QTDIR%;%QTDIR%/bin;%QTDIR%/lib;
注意,将此变量值追加到path变量的值中,即指向Qt的安装目录及其下的Bin和Lib目录。

2、msvc编译器的环境变量
通常安装好VC++6.0后,环境变量就已经配置好。如果它的环境变量丢失,可以到VC的安装目录的Bin目录中,
执行VCVARS32.BAT批处理文件即可恢复。

最后说明一点,在Windows XP中,环境就是分为用户变量与系统变量两部分,
通常放在配置环境变量时,修改用户变量部分的环境变量即可生效,建议注册并重新登录为妥。


二、在命令行窗口中使用qmake创建VC项目文件

1、我们在C盘根目录下创建一个文件夹qt3example和一个.cpp文件qt3example.cpp。

2、从命令行窗口进入c:/qt3example目录下。

3、创建一个和平台无关的项目文件qt3example.pro,请输入:
qmake -project

4、根据项目文件qt3example.pro创建一个平台特定的Makefile,请输入:
qmake qt3example.pro

5、我们使用VC++来编辑源代码,所以再创建一个VC++的项目文件,请输入
qmake -tp vc qt3example.pro

6、启动VC++集成开发环境,打开qt3example.dsp,然后编写源代码,并将其保存。请输入:
#include <qapplication.h>
#include <qwidget.h>

int main(int argc, char *argv[])
{
QApplication app(argc,argv);

QWidget *widget = new QWidget(0);

app.setMainWidget(widget);
widget->show();

return app.exec();
}


7、在命令行窗口中编译程序,请输入:
nmake

注意,会出现一些连接警告信息,不用管它就是了。警告信息内容可能如下:
...
LINK : warning LNK4199: /DELAYLOAD:comdlg32.dll ignored; no imports found from comdlg32.dll
...


8、运行程序,请输入:
qt3example

这时会弹出一个窗口,否则请检查是否遵循上述步骤。下面我们转入本文的重点。

三、编写基于QObject的Qt类

我们在上面的代码基础上,添加两个Qt类,并添加信号和槽。

1、新建一个myclass.h文件,再输入:

#ifndef _H_MYCLASS_H
#define _H_MYCLASS_H

#include <qobject.h>

class AClass:public QObject
{
        Q_OBJECT
public slots:
        void theSlot();
signals:
        void theSignal();
};


class BClass:public QObject
{
        Q_OBJECT
public slots:
        void theSlot();
};

#endif

2、新建一个myclass.cpp文件,再输入:

#include "myclass.h"
#include <qmessagebox.h>

void AClass::theSlot()
{
         QMessageBox::information(0,"AClass","AClass::theSlot()!");
         emit theSignal();
}


void BClass::theSlot()
{
         QMessageBox::information(0,"BClass","BClass::theSlot()!");
}

3、把qt3exampl.cpp文件修改如下:

#include <qapplication.h>
#include <qwidget.h>
#include <qpushbutton.h>

#include "myclass.h"

int main(int argc, char *argv[])
{
        QApplication app(argc,argv);

        QWidget *widget = new QWidget(0);

        QPushButton *button = new QPushButton(widget);
        button->setText("Press Me");

        AClass *a = new AClass;
        BClass *b = new BClass;

        QObject::connect(button, SIGNAL(clicked()), a, SLOT(theSlot()));    
        QObject::connect(a, SIGNAL(theSignal()), b, SLOT(theSlot()));

        app.setMainWidget(widget);
        widget->show();
    
        return app.exec();
}


4、在命令行中编译程序,请输入:
nmake


特别要注意,如果你通过VC++的IDE来编译执行程序,则会出现类似如下的连接错误:
...
qt3exampl.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall AClass::qt_property(int,int,class QVariant *)" (?qt_property@AClass@@UAE_NHHPAVQVariant@@@Z)
...

这是因为Qt扩展了C++语言,加了入slots、signals、emit等关键字,如果直接将源代码交给msvc编译器处理,则会出错。
解决办法是,在命令行窗口中使用nmake命令来编译源代码,这样Qt就能够先使用moc(元对象编译器 meta-object compiler)对
源代码处理后,再由msvc编译器处理,这样就能正确编译连接。

5、运行程序,请输入:
qt3example

到此,如果代码没有错误,则程序能够运行。

最后,对于Qt编程的一些总结如下:
1、为了在自定义类中使用信号和槽,应继承自QObject类。
2、在类定义的开始处加上Q_OBJECT宏,这是必需的。
3、在命令行窗口编译执行程序,而不是通过VC++的IDE。

vc++6.0搭建QT开发环境 **无论是vc还是vs那都是运行在windows平台的,所有linux平台的就没有必要往下阅读了 开发前的准备: 1、下载并安装vc++6.0(需要完整版,绿色版不行) 2、下载qt源码 3、将qt源码解压放在你习惯的目录下(下面的例子我全是用“C:/Qt/4.5.3”目录举例,我编译的是4.5.3的版本) 配置环境变量 1、配置vc的环境变量,在环境变量的path中添加vc98的安装目录(如:... 阅读详情

相关推荐

在Windows下使用VC++6.0编译器生成Qt应用程序

经过1个晚上的摸索,终于搞定了在WIN平台下使用VC++编译器生成QT的应用程序的办法,总结遇到的问题,希望大家不要走我走的弯路,与各位共勉。我是根据《C++ GUI Qt3编程》这本书随书光盘提供的Qt3.2.1 for VC++6.0来安装Qt程序的,当然是非商业版啦。步骤:1.在E:盘建立一个文件夹,命名为hello。2.进入hello文件夹目录,新建一个hello.cpp文

naiveC的专栏 5503

Qt配置VS的编译环境(以MSVC2015 64bit为例)

Qt配置VS的编译环境;以MSVC2015 64bit为例。

LuckyHanMo的博客 7160

VS2013+Qt5.6.0+opencv3.0环境配置

一、安装软件 1、首先下载安装VS2013 2、下载 visual studio Add-in 1.2.5 for Qt5 和Qt5.6.0 for Windows,下载地址http://www.qt.io/download-open-source/ 3、安装visual studio Add-in和Qt5.6.0,这里比较简单,只要一直next就可以了。 4、安装opencv,只要直接下

flysadness的博客 3728

QT5.14.2+VS2019安装配置教程Windows 与 QT5.14.2+VS2019如何使用MSVC2017构建和调试代码

QT5.14.2+VS2019 配置MSVC2017教程

NCUTer 7284

Qt与Visual C++ 6.0集成:安装与编译指南

安装编译过程是整个软件开发周期中的关键环节,尤其在使用老旧工具链如QT和VC6.0时,开发者会面临一系列配置挑战。本章节将概述整个安装与编译流程,为理解后续章节的具体步骤打下基础。通过上述各章节的介绍,我们可以看到QT和VC6.0集成的复杂性和挑战。虽然这一过程对于理解旧技术和迁移具有价值,但从长远发展来看,拥抱现代化开发环境将有助于提高开发效率和软件质量。

weixin_42604188的博客 735

VC6.0企业版+Qt3.3.4免安装版+FillTool动态链接文件.rar

VC6.0企业版+Qt3.3.4免安装版+FillTool动态链接文件 附加VC6.0卸载工具,可完全清理注册表。适合QT3老版本程序用,已安装成功使用

QT5 Creator(msvc编译器)调用VC编写的DLL

假设在项目中需要调用由VC编写的A.DLL,需要以下几步: 将A.DLL,A.LIB以及A.h等三个文件添加到项目的文件夹中。 将A.h添加到项目的“Headers”项下。 将A.LIB添加到项目的外部库中。 在源程序文件中添加 #include "A.h"。 ...

ayacbc1881的博客 1273

MOS管热阻的测量方法

实验室内如何测试mos管热阻

weixin_43492562的博客 4092

【Qt】VS2019+Qt5.14环境下,如何使用MSVC2017构建和调试代码

Qt5.14支持MSVC2015和MSVC2017,但不支持MSVC2019环节的构建,默认情况下,安装VS2019时并不会安装2017的编译工具,导致Qt5.14环境下无法使用高版本VC环境,导致部分兼容性问题,如webenginewidgets。那怎么才能使用MSVC2017的编译环境呢?需要做两件事情,一是安装2017编译工具,二是设置Qt对于MSVC2017的配置,下面是具体操作。 1 安装2017生成工具 安装很简答,只需要启动Visual Studio Ins...

Qingyang8513的专栏 7450

基于yolov5的鸟类图像准确识别

本项目主要基于yolov5进行鸟类准确识别,主要识别白鹭家族,红脚鹬,反嘴鹬,环颈珩,小白鹭以及夜鹭六类鸟

weixin_46064184的博客 3823

前端使用二开Thingsboard一、二、三事(三)-规则链

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 863

VC++开发积累——如何在vc++6.0中进行多行代码批量注释和取消注释,宏文件的使用

VC++开发积累——如何在vc++6.0中进行多行代码批量注释和取消注释,宏文件的使用

Arya的博客,专注后端领域 1432

风机叶片小规模振动监测数据集--读取测试

ETH风电叶片缺陷数据集–读取测试 数据简介 提示:这里可以添加本文要记录的大概内容: 结构健康监测是保障重要机电设备、建筑设施健康的重要技术手段。 一、lvm_read包安装 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务

cnjs1994的博客 2850

VC++ 6.0下Qt的编写和编译

为了使用信号和槽机制,我们将自定义类继承自QObject类,并正确书写了源 代码,但通过VC++的IDE编译执行程序时,却总是出现连接错误。这其实是由于对Qt类的一些特性不了解所致。具体描述,大家可以查看C++ GUI Programming Qt3一书中的“Qt的元对象系统”的描述。下面我们以在VC++6.0为例,介绍如何正确编写和编译自定义的Qt类。 一、配置Qt的环境变量和msvc编译器的环境变量1、添加Qt的环境变量:变量名:QMAKESPEC 变量值:win32-msvc 注意,win

Keep Moving--Leo Li 1642

github创建账号第一步始终出错

github创建账号总结:第一次注册GitHub,填好用户名邮箱密码后进入下一步就卡在哪里,上面还提示Unable to verify your captcha response等,进入网址的解决办法以及下载其他的浏览器也无法解决,用手机浏览器抱着试一试的心态竟然成功了,分享给大家。手机下载谷歌浏览器,进入GitHub正常注册,能向下继续,邮箱验证完以后再用电脑登陆就ok啦

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4376

【网络协议】【TSN】精讲TSN工作原理!图解超赞超详细!!!

TSN有一个服务等级(class of service,CoS)的概念。对TSN网络而言,不同优先级的服务对应图3中的PCP码。3位PCP码定义了0(最低)~7(最高)这8个优先级,传输类型分别对应基础、最大努力、卓越努力、严苛应用、延时和抖动小于100 ms的视频、延时和抖动小于10 ms的音频、内部网络控制、网络控制。其会对网络场景进行不同的匹配,是后续调度、配置设计中会考虑到的数据流调度因素。

风云说通信 2632

VC++开发积累——vc++6.0中删除函数的方法,右键,Delete

VC++开发积累——vc++6.0中删除函数的方法,右键,Delete

Arya的博客,专注后端领域 1076

2025小红书爬虫还能活?破解x-s签名+动态Cookie,亲测爬1000条笔记零封禁(附逆向全过程)

上周帮美妆行业的朋友爬小红书“口红推荐”笔记,刚发30个请求就被403,抓包一看x-s签名不对;换Cookie继续爬,爬50条又被封——小红书的反爬这两年简直是“地狱模式”:动态Cookie每10分钟过期,x-s签名算法季度更新,连请求头的User-Agent顺序错了都会被拦。。这篇文章不藏私,把逆向x-s签名的全过程、动态Cookie的维护技巧、1000条稳定爬取的实战代码全给你,连我踩过的8个坑都标出来了(最后附代理池配置,IP零封禁的关键)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 7405

VC++6.0 配置QT4.3.5

VC++6.0 配置QT4.3.5

自学C++,会写HelloWorld 694

【AutoSAR】【以太网】TCP/IP 栈详述与配置

目录 一、TCP/IP栈架构 二、TCP\IP栈的可扩展性 三、以太网协议V4 四、以太网协议 V6 五、基于IP的协议 六、函数调用序列图 一、TCP/IP栈架构 根据以上架构图,该栈主要包括:UPD\TCP\DHCP\ICMP\IPV4\IPV6\ARP; 二、TCP\IP栈的可扩展性 TCP\IP栈为适应不同的应用场景需求,将分为三类: 配置工程里的配置项: 三、以太网协议V4 1 IPV4 Internet Protocol (IP)是T.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5695

efm32 入门.pdf

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

QT4.3.2在VC++ 6.0下安装过程

  今天把自己在windowsXP下弄QT的东西整理一下,参考了网上的一些资料,把自己在vc6.0下安装qt的过程和大家一起分享一下.1 编译QT  1)下载QT的源代码文件包(注意:必须是.zip后缀的,.exe后缀的包是用mingw做编译器的源代码文件)。  2)将QT源代码解压到硬盘。    例如: C:/Qt/4.3.0/ 或   C:/Qt/4.3.0-msvc/  2 下载并安装允许Q

lelexy的专栏 4979

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

QT4.3.0在VC++ 6.0下安装指南

<br />http://www.cnblogs.com/zhangyang/archive/2007/07/15/818932.html<br />参考了一些资料,把自己在vc6.0下安装qt的过程和大家一起分享一下.<br /> 1 编译QT<br /><br /> 1)下载QT的源代码文件包(注意:必须是.zip后缀的,.exe后缀的包是用mingw做编译器的源代码文件)。<br /><br /> 2)将QT源代码解压到硬盘。<br /><br /> 例如: C:/Qt/4.3.0/ 或  

ryanzz的专栏 1159

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

静态编译Qt6.8.0(win10+MSVC2022+openssl+静态运行时)

因项目需要,客户需要一个单独的exe程序,被迫自己静态编译一版qt本次需求只是需要使用widget、qml、network(需要openssl)模块,其他模块只是顺带编译,所以本文档仅供有需要的小伙伴参考,若需要特定模块,请自行搭建相关编译环境。

aggs1990的专栏 3558

VC++6.0下wxWidgets工具的配置

<br />和 GTK、QT、SWT、SWING 一样,wxWidgets 也是一种开源跨平台的 GUI 框架。因 wxWidgets 和 MFC 有些渊源,有些亲近,故要体验一番 wxWidgets。现在最新版是 2.8.7。wxWidgets 程序还可运行于 Windows CE、Palm OS。不但包括 GUI,还有 Media、Socket、ODBC 等库。<br />详情请见 wxWidgets 的官方网站是:http://www.wxwidgets.org<br />本篇介绍 VC++6.0 下

wenhangyuwhy的专栏 572

Qt编译报错:Unexpected compiler version, expected Clang 18.0.0 or newer——Qt安装MSVC编译器

归根结底,Qt出现这个问题,肯定是编译环境有问题了,个人比较喜欢MSVC的编译环境,所以仍然坚持要调试出MSVC的kit。有人说需要是MinGW环境的问题,有人说是Visual Studio的问题,有人说要调整Qt安装。由于完整的Visual Studio过于庞大,而MSBuild又相对于来比较优秀,所以在很多时候,单独安装MSBuild就是一个不错的选择。如果你的设备上只有Visual Studio 2019和与之对应的MSBuild,那Qt基本上是可以自动识别的。这部分内容也就可以忽略了。

bugtraq的博客 2344
上一篇: 用户实际ID,有效用户ID,保存的设置用户ID(zhuan)
下一篇: wsaaccept 简述
metasearch
博客等级 码龄21年 158粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值