在visualstudio中使用Qt
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的更多相关文章
- 使用GIT进行源码管理 —— 在VisualStudio中使用GIT
GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在VS2013中已经转正.本文在这里简单的介绍一下如何在Visu ...
- 在VisualStudio中应该使用什么字体
转自:http://blog.csdn.net/bclz_vs/article/details/6607695 字体通常分为几个主要类型 San-Serif:无衬线字体 Serif:有衬线的字体 Mo ...
- Win32下 Qt与Lua交互使用(三):在Lua脚本中connect Qt 对象
话接上文.笔者为了方便使用Lua,自己编写了一个Lua的类.主要代码如下: QLua.h #ifndef QLUA_H #define QLUA_H // own #include "inc ...
- Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
话接上篇.成功配置好Qt+Lua+toLua后,我们可以实现在Lua脚本中使用各个Qt的类.直接看代码吧. #include "include/lua.hpp" #include ...
- 独立线程中实现QT GUI
在网上搜集的资料: http://www.qtcentre.org/threads/16552-Starting-QT-GUI-in-a-seperate-Threadhttp://stackover ...
- 去除VisualStudio中拼写错误检测的红色波浪线
去除VisualStudio中拼写错误检测的红色波浪线 在Visual Assistant中将 Underline spelling errors in comments and strings us ...
- CMake结合Visual Studio中开发Qt应用程序注意事项
Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...
- [转]Visual Studio 2010 中安装Qt 5.1
截至目前(2013年7月12日)为止,Qt 的最高版本为Qt5.1,在该版本中已经将Qt Creator与Qt Lib集成在一个文件夹中,因此安装的时候较为方便,只需安装一个即可.因为Qt具有超强的可 ...
- CMake中添加Qt模块的合理方法
https://www.jianshu.com/p/7eeb6f79a275 转载自这里 用CMake来组织的工程中要用Qt首先要设置.找到Qt相关模块.主要是通过find_package这个CMak ...
随机推荐
- 修改登陆织梦后台的“DedeCMS 提示信息”
修改方法: 在dedecms程序的include目录中找到文件common.func.php并对其进行编辑,把其中的“DedeCMS 提示信息”修改为自己想要的内容提示: 在dedecms程序的默认管 ...
- SSH 使用密钥登录并禁止口令登录
小结:修改下sshd配置文件,把公钥传上去就好了 先生成公钥和私钥,默认在/root/.ssh/目录,可以先看一下有没有这个目录. 生成公钥后,以后其它服务器也都可以复用这个公钥 最好生成时输入密码! ...
- C语言的运算符的优先级与结合性+ASCII表
[0]README 0.1) 内容来源于 C程序设计语言, 旨在整理出C语言的运算符的优先级与结合性, 如下图所示(哥子 记了大半年都没有记住,也是醉了,每次都要去翻): Alert)以下内容转自:h ...
- PHP中的session永不过期的解决思路及实现方法分享
打开php.ini设置文件,修改三行如下: 1.session.use_cookies 把这个的值设置为1,利用cookie来传递sessionid 2.session.cookie_lifeti ...
- webstorm vscode 常用设置
webstorm常用的设置及操作图解 VS Code 新建vue文件初始化模板 VSCode新建vue文件自定义模板
- ICMP控制报文协议
1.引言 ICMP经常被认为是IP层的一个组成部分.它传递差错以及其他需要注意的信息.ICMP报文通常被IP层或更高层 协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程.ICMP报 ...
- Centos7重新安装yum
Centos7重新安装yum rpm -qa|grep yum 然后用下面的命令删除出现的xxx包: rpm -e --nodeps xxx 下载 python-urlgrabber-3.10-8.e ...
- animate和scrollTop的使用
// 平滑滚动到ola结果位置 var scrollHeight = $("#wrap_div")[0].scrollHeight; var curDivHeight = $(&q ...
- 2017-2018-1 20179209《Linux内核原理与分析》第六周作业
一.分析system_call中断处理过程 实验 下载最新menu,并在test.c中增加mkdir与mkdir-asm函数原型 rm menu -rf git clone https://githu ...
- 【题解】CF559C C. Gerald and Giant Chess(容斥+格路问题)
[题解]CF559C C. Gerald and Giant Chess(容斥+格路问题) 55336399 Practice: Winlere 559C - 22 GNU C++11 Accepte ...