c++编程 qt mfc
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++编程 qt mfc相关的知识,希望对你有一定的参考价值。
你好!我刚刚上大二,学电子的,以后的方向准备是嵌入式,物联网等智能控制,既能做硬件,又能写上位机程序,是不是qt更适合
如果只开发windows平台的程序,那么选择MFC/WTL/VCL都是严格的比qt好。qt完全的面向对象和并且完全使用消息模型,但它的代码模型(qt大量使用虚函数,而且必须有个代码预处理过程),对于喜欢效率和别的方面的人来说,qt并不好,qt用的人也不多,所以虽然的事件模型简单,但开发时能获取的帮助信息并不多,而且qt的UI模型不太一样,不能实现native功能(不好画出很花哨的界面效果)。
在linux下开发,目前没有一个好的ui的ide(gnome和wx的稳定性还不能和qt相比,而且也没有好的集成环境)。所以在linux下,廖化为先锋,qt是比较好的选择(不过qt是商业软件,有版权费的,我以前一个公司做EDA软件,追求跨平台,所以选择qt)。
参考技术A qt不合适,QT是写GUI的,和MFC一样。
你的上位机指的是什么?PC么?
做嵌入式的话,有那么几个层次
1 GUI也算一个层次,但是不符合你说的既能做硬件、又能写上位机程序;
2 应用开发,这也是不接触硬件的;
3 驱动开发,符合你的要求,但是要求很高,没几年经验下不来,而且需要的知识要非常全面;
4 嵌入式硬件系统,这个基本和程序关系不大了。
希望你能把你的想法描述得更清楚些,我们更好的讨论。追问
假设我做了一个带摄像头的遥控飞机,把采集到的图像通过某些芯片将图片发送到电脑上,这时电脑上需要一个操作平台,所以要编写一个这样的平台。谢谢啊,麻烦了
如何在 C++ 语言中将谷歌地图 API 与 MFC 或 QT 一起使用?
【中文标题】如何在 C++ 语言中将谷歌地图 API 与 MFC 或 QT 一起使用?【英文标题】:How to use google map API with MFC or QT in c++ language? 【发布时间】:2018-04-21 08:27:54 【问题描述】:我有一个问题,如何在我的开发程序中使用 google map api。
我的程序在 Visual Studio 2017 环境中由 C++ 语言实现,而 MFC 通常用于图形界面。
我想使用google map api开发两个版本的程序。 第一个是在没有互联网连接的情况下在我的程序中使用谷歌地图。 第二个是互联网连接。
如果有人知道怎么做,请回答我的问题。
【问题讨论】:
【参考方案1】:Qt C++ 提供了一个 QWebChannel,它填补了 C++ 应用程序和 HTML/JavaScript 应用程序之间的空白。
您需要在 C++ 中创建一个 QWebChannel 并注册一个 JavaScript 辅助对象。该对象公开了公共方法,这些方法可以从 HTML 中的 JavaScript 调用。
QWebEngineView::setUrl() 托管一个具有 Google 地图的页面。 QWebEnginePage::runJavaScript() 为您提供了操纵地图的能力。 C++调用JS,JS调用C++——真是厉害!
【讨论】:
【参考方案2】:我遇到了和你一样的需求。我找到的解决方案是使用嵌入式浏览组件并从该组件访问谷歌地图。 请参阅我的article 关于此实现。 基本上,这里是将此类组件添加到 MFC 应用程序的说明:
-
打开 Visual C++ 并按照以下步骤操作:
从“文件”菜单中选择“新建”。
选择 MFC 应用程序向导 (exe)。
输入项目名称并选择位置。
单击确定。当出现第 1 步的对话框时,选择适合您的应用程序的应用程序类型 - 单文档、多文档或基于对话框。在本例中选择“基于对话框”。
单击下一步。
选择应用程序功能和支持。
第 2 步的对话框要求您选择应用程序需要的任何功能和支持——例如,关于框或自动化支持。 WebBrowser 控件是一个 ActiveX 控件,因此选择 ActiveX 控件。点击下一步进入下一步。
选择项目样式。 第 3 步的对话框用于定义您的项目。您只有一个项目样式选项,即标准 MFC。但是您可以在源代码中指明是否希望 IDE 生成 cmets,并且您可以指定要如何使用 MFC 库。默认选择适用于大多数应用程序。单击下一步转到下一步。命名文件和类。第 4 步的对话框显示 Visual C++ 创建的所有文件和类的名称。您可以将它们更改为更具描述性的名称或您的规范要求的名称。点击完成。
添加 WebBrowser 控件。
与 Google 地图接口的实际部分嵌入在也应托管的 HTML 代码中,因此我的解决方案将浏览器的托管与与 Google 地图的接口相结合。
此示例中的 HTML 代码格式为:
HTML_TEXT.Format(L"<!DOCTYPE html><html><meta http-equiv=\"IE X-UA-Compatible\" content=\"IE = edge\"><body><div id =\"googleMap\" style=\"width:%dpx;height:%dpx\"><script>function myMap()var mapProp = center:new google.maps.LatLng(%f, %f), zoom : 10;var map = new google.maps.Map(document.getElementById(\"googleMap\"), mapProp);marker = new google.maps.Marker(position: new google.maps.LatLng(%f, %f),map: map);</script><script src = \"https://maps.googleapis.com/maps/api/js?key=%s&callback=myMap\"></script></div></body></html>", w, h, Latitude, Longitude, Latitude, Longitude, API_KEY);
如您所见,您可以使用经度和纬度生成带有指向给定位置的标记的地图。您还需要obtain an API_KEY from Google。
【讨论】:
感谢您的回答。但我没有成功地做到这一点。请逐步让我知道您的诀窍(例如,写代码的地方在哪里)。事实上,我在生成的对话框的 OnInitDialog() 函数中写下了您的代码(例如调用 WriteHTML func.、Method2)。奇怪的是,当我调用 WriteHTML 时,m_Browser.get_Document() 没有得到任何对象指针。你能帮我更多吗?我还有一个问题。你试过 Visual Studio 2017 吗? 我正在使用 Visual Studio 2013 Ultimate。那是因为我在被邀请加入 BizSpark 后获得了 Microsoft 的免费许可证。如果你把你的代码发给我 haephrati@gmail.com 我会看看。 谢谢。当您发送源代码时,请始终删除临时和大文件,例如 .sdf以上是关于c++编程 qt mfc的主要内容,如果未能解决你的问题,请参考以下文章