1.  说明

在此说明一下IDE跟封装的之间的关系,他们之间本质上来说没有关系,是可以多对对的关系。

Qt开发是个比较泛的概念,Qt是由很多一系列类组成的整体,就像boost里面也有很多的类,而boost是一个整体的概念。同样,MFC也是一个比较泛的概念,里面有很多类。

这三种都是所谓的编程或封装的类。

visual studio是VC开发的一个IDE,eclipse似乎也可以作为VC开发的IDE。记事本也是个IDE,只是比较简陋。QtCreator也是个IDE。

visual studio这个IDE也可以来开发“使用Qt库”的程序。只是站在程序编译的角度,你要告诉IDE你这个文件该怎么编译。

维护商业版Qt的公司开发了一个“方便编译Qt程序”的IDE,叫QtCreator,这个工具跨平台,只是相比visualstudio,这个工具的功能不太强大,想尝试的童鞋可以试试。

你可以在任何工程中使用Qt的库,比如使用Qt的字符处理类QString、QFile。需要注意的是,如果你的程序中使用了消息响应相关的内容,那主程序就得是QtCoreApplication。不过很多时候你不需要关注这种细节。

Qt的消息响应并不局限在界面程序,不带界面的程序里面也会有消息处理。

当然,MFC的界面类和Qt的界面类是可以一起出现在程序里面的,不过这个只有高手才会,入门者一般不推荐这样做。

2.  开发

1.1.  基础知识

部署开发环境;

将qt安装在d盘根目录下,新建以下两个环境变量:QMAKESPEC=win32-msvc2008、QTDIR=D:\Qt\4.6.2

往Path路径加入”%QTDIR%\bin”

VC工程设置

设置头文件include目录,如下图:

设置链接库目录:

设置依赖的库库文件(注意Debug和Release版本文件不要用错):

Qt基础知识

学习《C++ GUI Programming with Qt4》章节Chapter 1;

理解signal、slot;

(可参考帮助文档(Home/The QtObject Model/signals and slots)章节)

参考资料:

C++ GUI Programming with Qt4

Qt Assistant帮助文档

1.2.  Qt GUI编程

对话框QDialog:

使用对话框作为信息的录入界面;

学习《C++ GUI Programming with Qt4》Chapter2

掌握程序主窗口、菜单、工具栏、Action响应处理:

学习《C++ GUI Programming with Qt4》Chapter3

D:\Qt\4.6.2\examples\mainwindows\application;

构建程序界面的方法:

方法1、使用designer设计界面,界面直观,适用于复杂的界面布局;

(ui文件的使用见“编程杂项\编译UI文件”)

方法2、在界面简单且后续很少改动的情况下直接使用代码手工编写界面(使用Layout);

列表控件QTreeWidget:

使用QTreeWidget显示具有层次结构的数据;

示例代码:

Example\TreeWidget;

1.3.  数据库操作

连接oracle数据库,掌握QSqlDatabase;

使用QSqlQuery实现增、删、查、改等基本数据库操作;

学习《C++ GUI Programming with Qt4》Chapter 13.

示例代码:Example\Database;

1.4.  2D图形绘制

学习《C++ GUI Programming with Qt4》Chapter8

3.  编程杂项

中文显示

设置编码,在构造Application时调用:

QTextCodec * pCodeC =QTextCodec::codecForName(“GB18030”);

QTextCodec::setCodecForCStrings(pCodeC);l

QTextCodec::setCodecForLocal(pCodeC);

QTextCodec::setCodecForTr(pCodeC);

构造中文内容的QString

QString strContent =QString::fromLocal8Bit(“中文内容”);

QString、CString、const char *间的转换:

const char * szTest = “测试文字”;

CString strC = CString(szTest);

QString strQ =QString::fromLocal8Bit(szTest);

strC = QString::fromLocal8Bit((const char*)strQ.toLocal8Bit());

编译UI文件(界面文件)

设置ui文件的编译选项:

Command Line:

%qtdir%\bin\uic.exe $(InputPath) -o$(InputDir)ui_$(InputName).h

Description:

Uic'ing $(InputName).ui ...

Outputs:

$(InputDir)ui_$(InputName).h

使用举例:

DMSCreatePlanDlg.ui通过uic命令生成了ui_DMSCreatePlanDlg.h

DMSCreatePlanDlg.h文件:

#include “ui_DMSCreatePlanDlg.h”

class DMSCreatePlanDlg : public QDialog

{

Q_OBJECT

public:

DMSCreatePlanDlg(QWidget* pParent);

private:

Ui::DMDCreatePlanDlgui;

}

DMSCreatePlanDlg.cpp文件:

DMSCreatePlanDlg::DMSCreatePlanDlg(QWidget* pParent)

: QDialog(pParent)

{

ui.setupUi(this);

……

}

编译带moc信息头文件

设置需要生成moc信息头文件的编译选项:

Command Line:

%qtdir%\bin\moc.exe$(InputDir)$(InputName).h

-o $( ProjectDir)moc_$(InputName).cpp

Description:

Moc'ing $(InputName).h ...

Outputs:

$( ProjectDir)moc_$(InputName).cpp

每个qt工程一般包含一个autogen.cppx文件,用来include生成的moc_.cpp文件。

元对象编译器moc (the Meta Object Complier):

moc 分析C++源文件,如果它发现在一个头文件(header file)中包含Q_OBJECT宏定义,然后动态的生成另外一个C++源文件,这个新的源文件包含 Q_OBJECT的实现代码,这个新的 C++ 源文件也会被编译、链接到这个类的二进制代码中去,因为它也是这个类的完整的一部分。通常,这个新的C++ 源文件会在以前的C++ 源文件名前面加上 moc_ 作为新文件的文件名。

QWidget和QDialog的选择

QWidget是窗口元件,可当做控件,一般用于嵌入在其他QWidget或对话框中;

QDialog是独立的窗口,用于独立显示;

使用Visual Studio Add-in 1.2.3 for Qt5

使用此工具可以免除添加编译选项的麻烦

下载地址Qt相关程序的地址

http://qt-project.org/downloads

在安装Qt的开发插件之后,visual studio的IDE是长这样的

在工程上右键多了这么几个选项:

0

在visualstudio中使用Qt相关推荐

  1. CMake结合Visual Studio中开发Qt应用程序注意事项

    Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...

  2. 去除VisualStudio中拼写错误检测的红色波浪线

    去除VisualStudio中拼写错误检测的红色波浪线 在Visual Assistant中将 Underline spelling errors in comments and strings us ...

  3. vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

    在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...

  4. Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类

    话接上篇.成功配置好Qt+Lua+toLua后,我们可以实现在Lua脚本中使用各个Qt的类.直接看代码吧. #include "include/lua.hpp" #include ...

  5. Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...

    如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake) 我使用的是ubuntu 14.04,cmake 2.8.12.2 ...

  6. 如何在VisualStudio中加入你自己的assembly的Intellisense?

    当你发布你自己的assembly给第3方时,你是否打算在VisualStudio中提供Intellisense? 如果答案是肯定的话,这里有一个简单的向导: 在你自己的代码中加入XML文档.Ghost ...

  7. Qt4_在次线程中使用Qt的类

    在次线程中使用Qt的类 当函数可以同时被不同的线程安全地调用时,就称其为"线程安全的"(thread-safe).如果在不同的线程中对某一共享数据同时调用两个线程安全的函数,那么结 ...

  8. [软件工具][原创]pcl引用库一键配置到VisualStudio中支持vs2015-v2022使用教程

    你还在手动配置pcl吗?那你out了,由于pcl的include,lib太多很容易配置出错,为了解决配置效率低下配置出错问题,我们制作了一个全系列支持pcl配置工具,大家只要安装好pcl并保证有PCL ...

  9. VS中使用Qt方法详解

    在 Qt Creator 中可以使用 MSVC 编译工具对 Qt 项目进行编译.若有人比较习惯于使用 Visual Studio,或某些项目必须使用 Visual Studio,也可以在 Visual ...

最新文章

  1. mybatis调用oracle存储过程
  2. oracle查询语句注意事项:
  3. linux虚拟内存当硬盘,linux里面虚拟内存和swap有什么不同?
  4. SEO优化之一步一步诊断网站
  5. hibernate 表关系映射详解之继承关系
  6. ps、grep和kill联合使用杀掉进程(转)
  7. 使用Xtend构建Vaadin UI
  8. 通过流程构建组织的【个人能力】和【团队能力】
  9. C++ array vector 数组
  10. 问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(3)——修正一个问题
  11. opencv中滚动条操作
  12. 安装2000服务器显示文件挂起,MS sql server 2000安装中的提示挂起的解决方案。
  13. Prometheus+k8s之告警通知
  14. 计算机的用户和密码在哪里看,电脑b站(哔哩哔哩)怎么查看自己的账号和密码?登录地址在哪找到?...
  15. JAVA拳皇jar_拳皇(Java简单的小程序)源码示例
  16. matlab r2020a例题 2.1节 数据类型(下)
  17. http://www.ithao123.cn/content-1432166.html
  18. 使用了23年的Java要开始收费了?
  19. Flink流式计算从入门到实战 二
  20. Linux无法删除只读文件的解决方案

热门文章

  1. 玩“剪刀石头布“的脑机!密歇根大学开发由大脑意识精密控制的假肢
  2. 一篇文章梳理完 AR 背后的八大关键性技术
  3. 计算机软件和硬件比较,软件与硬件RAID优劣之比较
  4. php根据循环条件切换图片,thinkphp 循环显示图片问题!!!~~~~
  5. 一份邀请函引发的中国芯片新猜想
  6. JupyterLab 3.0发布:支持中文界面,安装插件无需Node.js
  7. 正则表达式抓取文件内容中的http链接地址
  8. 华为云计算FusionCompute环境部署实验之使用批量部署工具安装
  9. IBatis.Net学习笔记四--数据库的缓存模式
  10. 创建topic验证kafka集群