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的主要内容,如果未能解决你的问题,请参考以下文章

C++ Qt - 检查蒸汽游戏是不是正在以编程方式运行

为什么 qt 成为 c++ 界面编程的第一选择?

C++ 中的图形应用程序和 C 中的代码 **Qt 编程**

C++框架编程Qt 的 信号与槽 简单了解!

C++框架编程Qt 的 信号与槽 简单了解!

在Qt编程中,如何调用C++的STL?