V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hunk
V2EX  ›  程序员

做一个 win 平台下桌面应用,大家说说是用 QT 还是 vs C++?

  •  
  •   hunk · 2016-06-18 20:36:09 +08:00 · 33546 次点击
    这是一个创建于 3078 天前的主题,其中的信息可能已经有所发展或是发生改变。

    都是从零开始学,有些略偏向 vs c++.

    本打算用 delphi ,谁知 XE 装在 HyperV 上的 win7 中会导致虚拟机暂停,不知何故。

    想做一小工具,将图片拖上去后,根据预设对图片调整大小和尺寸的处理,比较简单。

    83 条回复    2016-06-23 21:02:53 +08:00
    soland
        1
    soland  
       2016-06-18 20:38:15 +08:00
    VS
    hiro0729
        2
    hiro0729  
       2016-06-18 20:42:33 +08:00
    nw.js
    theoractice
        3
    theoractice  
       2016-06-18 20:45:42 +08:00
    现学 c#半小时搞定
    feng32
        4
    feng32  
       2016-06-18 20:47:17 +08:00
    可以用 Visual C++ 写 Qt 程序 -_-
    其实楼主应该问,用 Win32 SDK / MFC / Win Forms / WPF 还是 Qt / wxWidgets
    murmur
        5
    murmur  
       2016-06-18 20:52:06 +08:00
    练习的话最好还是 c++ 这个是考基本功的
    但是。。做工具用的话,批量调整图片尺寸这不是一抓一大把么
    hunk
        6
    hunk  
    OP
       2016-06-18 20:54:02 +08:00
    @theoractice 要照顾 xp ,只能用 winform ,不实用不是。
    借这机会考虑学下 c++,以前总躲着走。
    asan2006
        7
    asan2006  
       2016-06-18 20:54:50 +08:00
    赞同 3L
    loading
        8
    loading  
       2016-06-18 20:54:52 +08:00 via Android
    如果不怕误报,可以用快手。
    hunk
        9
    hunk  
    OP
       2016-06-18 20:55:39 +08:00
    @hiro0729 nw 有些太超前了,自己玩玩还成。工具还是要稳定些,适应性更好些的。
    hunk
        10
    hunk  
    OP
       2016-06-18 20:56:33 +08:00
    @feng32 简单说应该是 mac 和 QT ,怎么选。
    winform 和 wpf ,基本不考虑。
    hunk
        11
    hunk  
    OP
       2016-06-18 20:58:11 +08:00
    @loading 快手 app?
    @murmur 工具是大量的,这个是朋友的工作,定制化更高些,不需要我借助工具帮忙处理了。也是一个新方向吧。
    icylord
        12
    icylord  
       2016-06-18 21:12:52 +08:00
    QT 挺好的
    ADMlN
        13
    ADMlN  
       2016-06-18 21:35:43 +08:00 via Android
    为何不做 UWP
    theoractice
        14
    theoractice  
       2016-06-18 21:41:26 +08:00
    @hunk winform 和 wpf 都很实用,也都支持 xp ,只是你不知道罢了
    YuJianrong
        15
    YuJianrong  
       2016-06-18 21:47:03 +08:00
    为什么一定要桌面?简单的应用 nodejs+网页完全可以。
    用 HTML 布局简单多了。
    hunk
        16
    hunk  
    OP
       2016-06-18 22:05:59 +08:00
    @theoractice winform 和 wpf 是实用,安装部署的时候你知道的。

    @YuJianrong 需要和客户机打交道多,还是 win32 比较实用。
    k9982874
        17
    k9982874  
       2016-06-18 22:28:38 +08:00 via iPad
    只考虑 win 环境,开发速度, gui ,性能不敏感,推荐 c#
    bytelee
        18
    bytelee  
       2016-06-18 22:30:57 +08:00   ❤️ 1
    我现在都是拿 python 写 QT 舒舒服服就搞定了
    dantegg
        19
    dantegg  
       2016-06-18 23:01:15 +08:00
    难道不就是拿 vs c++ 写 qt 么
    hanxiV2EX
        20
    hanxiV2EX  
       2016-06-18 23:06:27 +08:00 via iPhone
    html5 + js + css 就能搞定。静态网页能搞定的东西,可以做成 chrome 插件。拖拽读取文件内容,保存处理后的文件用下载的方式。中间怎么处理都交给 js ,怎么排版都交给 css 。
    nozama
        21
    nozama  
       2016-06-18 23:09:03 +08:00
    结果打包出来几十 M ,还不如做成在线版呢。。。
    pkhope
        22
    pkhope  
       2016-06-18 23:15:20 +08:00
    QT 也用 C++啊,你想说 MFC 还是 QT 吧
    rock_cloud
        23
    rock_cloud  
       2016-06-18 23:24:21 +08:00
    上学时做了一个批量处理音乐,合并音轨的工具,实在懒得写 GUI ,就用 webpy 做后台, html 做前台, ffmpeg 做核心,弄了一个网页版程序,也很好用。
    acros
        24
    acros  
       2016-06-18 23:29:36 +08:00
    如果是从 0 开始学 C++,真没必要用 C++开发 GUI 。
    Qt 应用场景太不好说了,个人觉得以后只会在一些中大型软件上采用了。
    如果不考虑跨平台,我就去学 WPF 了。跨平台的现在有意 Electron··· Web 现在看起来是大势所趋啊。
    jeffw
        25
    jeffw  
       2016-06-19 08:12:47 +08:00 via iPhone
    如果不愿折腾的话,安安稳稳的用.NET winform ,最好用 4.0 ,兼容 XP
    jeffw
        26
    jeffw  
       2016-06-19 08:15:07 +08:00 via iPhone   ❤️ 2
    其实楼主的内心已经有答案了,他只是想得到一些肯定。
    yxzblue
        27
    yxzblue  
       2016-06-19 08:27:11 +08:00
    electron.js
    FrankHB
        28
    FrankHB  
       2016-06-19 08:31:09 +08:00
    从 0 开始? Win32 那坨不用倒腾了,基本上只配被封装的料。自己造轮子撸个十年八年的顺眼了再说。
    虽然 Qt 一坨私货金玉其外败絮其中,然而矮子里挑将军倒是没什么疑义……眼前勉强算是个“能用”的。不过要是在乎部署,一不小心和.NET 半斤八两。 PyQt 的话,搞不好从 0 开始的工作量翻两倍。
    MFC ? wx ?不是拿来给现有项目擦屁股还不如直接 Win32 呢……
    hunk
        29
    hunk  
    OP
       2016-06-19 08:47:17 +08:00
    @k9982874 开发速度 inform 没的说,只是部署稍麻烦,要照顾到 XP 的老系统。
    @bytelee pyQT 的话,倒不如直接 QT ,想借机会练手而已。
    @hanxiV2EX chrome 插件可以搞定,只是还得让每人安装 chrome ,这不跟 inform 部署要安装 net framework 是一个道理。
    @nozama 在线版有一个问题,需要下载,面对的用户,可能是下载到哪都不知道的主,需要复制粘贴。设想作成单机版就是直接在原始图片目录中新建目录,保存处理后的图片,方便查找吗。
    @pkhope 都是 C++,无非是选择方向不同而已。
    @rock_cloud 想过, html 和本地文件交互不方便,还需要人工做些操作。我想做这个小工具其实在各种图片处理软件中都已实现,我无非是定制而已,你拖进去,我就处理成特定大小特定尺寸而已,提高小白的工作效率。
    @jeffw net framework 需要安装是最大难题。另外,在考虑用 delphi , C++的尝试比较适合学习。看大家反对声音不少啊。
    @FrankHB 您的最好意见是啥?完全没懂。
    FrankHB
        30
    FrankHB  
       2016-06-19 08:52:51 +08:00
    @hunk 不管是要练手还是开发实用 app ,耗不起资源的话,我的忠告:远离 C++、远离 Win32 、远离桌面 GUI 。
    掐指一算,我撸 C 艹 GUI 好像有 7 年啦……虽然就 GUI 而论是三天打渔两天晒网的,前 3 年和 Win32 其实也没什么关系,最近几年可是有一大半浪费在 Win32 这坨辣鸡上了。(虽然讲道理, Android 和 X11 更辣鸡……)
    https://github.com/FrankHB/YSLib
    就这么个轮子敲捣你给出的需求还得费些劲。
    21grams
        31
    21grams  
       2016-06-19 09:04:37 +08:00
    没人提 java ?
    FrankHB
        32
    FrankHB  
       2016-06-19 09:19:00 +08:00
    @21grams Java 桌面的话, AWT/Swing/SWT ?(先不说部署问题估计不会合 LZ 胃口了。)
    大致上 Swing 和 WPF 是一类、 SWT 和 Qt 这样的是一类、剩下的 AWT 和 MFC 和 wx 是一类奇葩。老调重弹没有新意。
    也就 Swing 架构还算规整造轮子能(找 Sun 的白皮书)抄,然而不管是效果还是性能或者是实现质量普遍惨不忍睹。剩下的不是 Java 厨估计无法忍受……
    songsong
        33
    songsong  
       2016-06-19 09:19:16 +08:00
    DELPHI 没有更好的了
    songsong
        34
    songsong  
       2016-06-19 09:20:56 +08:00   ❤️ 1
    楼主 delphi 不搞移动开发的话就装 delphi 7 想图新鲜 就是 最新的 10. 1 柏林
    hunk
        35
    hunk  
    OP
       2016-06-19 09:29:37 +08:00
    @songsong 前几年帮朋友写的工具用的就是 delphi7 ,高效印象很深。

    但我的代码水平太烂, pascal 的语法之类还真是太古老了。

    解决工作而言, delphi 还是不错的选择。
    andyhuzhill
        36
    andyhuzhill  
       2016-06-19 09:33:22 +08:00   ❤️ 1
    @hunk 其实还有一个开源版的 Delphi Lazarus 也是挺好用的 我自己写些小工具就用它
    hunk
        37
    hunk  
    OP
       2016-06-19 09:38:43 +08:00
    @andyhuzhill 谢谢,我看看。
    songsong
        38
    songsong  
       2016-06-19 09:40:16 +08:00
    delphi 忠实粉丝 ,写些小工具我也是也是 delphi 首选
    SuperMild
        39
    SuperMild  
       2016-06-19 09:40:49 +08:00 via iPad   ❤️ 1
    这年头能用 HTML5 技术栈来做 GUI ,是多么省心多么幸福的事情!这是个美好的时代,拥抱新技术吧!
    hunk
        40
    hunk  
    OP
       2016-06-19 09:55:33 +08:00
    @yxzblue 以前了解过 nwjs ,这个 electron.js 还真是让人眼前一亮啊。
    code4life
        41
    code4life  
       2016-06-19 10:29:32 +08:00
    Delphi Qt Electron C#.....都接触过,专门桌面开发好多年, 建议你哪个喜欢用哪个,哪个顺手用哪个,这些都是可以很快实现你的需求的。
    从零开始的话, MFC 千万别碰,千万别碰,千万别碰
    magicdawn
        42
    magicdawn  
       2016-06-19 10:31:25 +08:00
    electron ... 要是我要做桌面应用的话 ...
    不用考虑平台了...
    pynix
        43
    pynix  
       2016-06-19 10:40:43 +08:00
    一些很好的工具已经把 web 技术带到桌面平台了。。。。
    misaka19000
        44
    misaka19000  
       2016-06-19 10:51:43 +08:00
    electron +1
    ChiChou
        45
    ChiChou  
       2016-06-19 10:54:13 +08:00
    Electron (手动斜眼
    VVJiao
        46
    VVJiao  
       2016-06-19 11:00:40 +08:00
    @FrankHB 这位似乎有很多 windows 桌面开发经验,讲的还是挺有道理
    realpg
        47
    realpg  
       2016-06-19 11:04:22 +08:00
    如果不是非得强制要原生语言,还是 java 或者.net 吧……
    开发速度真快……
    loudis
        48
    loudis  
       2016-06-19 11:06:02 +08:00
    做点小工具的话, delphi 上手最快, delphi7 就足够了。

    如果你要开发个商业软件的话,还是.net 或者 web gui 吧
    ETiV
        49
    ETiV  
       2016-06-19 11:15:53 +08:00 via iPhone
    GUI 太高级了

    要我就 ImageMagick+bat ……

    图片文件拖放到 bat 上,使用方式一样一样的
    exoticknight
        50
    exoticknight  
       2016-06-19 11:18:45 +08:00
    作为 b 站小 up 主,我是用 ImageMagick 加 py 脚本的方式,再写个 bat ,真的就直接拖文件 ok 了
    muyi
        51
    muyi  
       2016-06-19 11:23:33 +08:00
    写个桌面小工具,首选 Delphi
    webcjz
        52
    webcjz  
       2016-06-19 11:32:46 +08:00 via Android
    不考虑性能肯定 c#最好啦, xp 装个库能用就可以了,现在写 web 的都不考虑 hack ie6 了
    jitongxi
        53
    jitongxi  
       2016-06-19 11:37:56 +08:00
    我本身写 Android 的,目前偶尔谢谢 pc 桌面,用的 WPF, wpf 和 Android 在设计上相似点很大,可以做很炫酷的效果. 细分下来的话 Android 更灵活.
    xwing
        54
    xwing  
       2016-06-19 11:41:59 +08:00
    用 delphi7 啊。 开发 win32 程序妥妥的。
    fy
        55
    fy  
       2016-06-19 11:49:20 +08:00
    讲道理 delphi 很不错的,上手快、方便、编译出的程序小、兼容性好无依赖。同系的 C++ builder 也可以。

    @FrankHB 项目很清真。
    hunk
        56
    hunk  
    OP
       2016-06-19 11:50:26 +08:00
    @misaka19000 @ChiChou 不支持 xp 是硬伤,刚刚跟朋友确认他正巧是 win7 用着不爽,换回了 xp 。
    SCaffrey
        57
    SCaffrey  
       2016-06-19 12:28:33 +08:00
    electron
    bdbai
        58
    bdbai  
       2016-06-19 12:40:15 +08:00 via Android
    WinForm 呗,支持 XP ,开发效率高。.NET 类库里面内置相关 API ,无需第三方库。
    WPF(泛指 XAML) 和 Electron 都是开发大应用的,小工具用不着。特别是后者打包出来有几十兆。
    C++ 及其各种 GUI 框架开发效率没有 C# 高。
    ksword
        59
    ksword  
       2016-06-19 13:01:30 +08:00
    可以试下 sciter ,在性能和开发速度上找了个平衡, ui 布局事件处理是模拟 html+css 的
    jeffersonpig
        60
    jeffersonpig  
       2016-06-19 13:05:58 +08:00
    Qt5 库编译的程序依赖库太大了,所以弃了,不知道现在怎么样了
    BSD
        61
    BSD  
       2016-06-19 13:09:28 +08:00
    这么个小玩意, VB 最简单。
    BGLL
        62
    BGLL  
       2016-06-19 13:44:57 +08:00
    既然都 C++ 了, Qt 是不二之选。想用界面描述语言用 QML ,想简简单单拖控件也可以拖控件。想用 VS ,也可以在 VS 里写。
    hp3325
        63
    hp3325  
       2016-06-19 14:37:05 +08:00 via Android
    要照顾 XP ,除了 Delphi XE 没有其他更好的选择。

    各种库都是现成,部署不需要任何附加包,一个可执行文件覆盖 XP 到 WIN10 全平台,除了可执行文件大了点。
    hunk
        64
    hunk  
    OP
       2016-06-19 14:57:31 +08:00
    想起个功能,似乎还真是非 C++不能完成。

    复印件中有身份证,都是以 A4 大小存储的,需要提取身份证并剪裁,这点能想到的是 opencv 实现。 node 在这方面,似乎还有些欠缺, c++自然是轻松应对。 delphi 应该也可以,只是网上能找到的资源不多。
    theoractice
        65
    theoractice  
       2016-06-19 18:14:17 +08:00
    @hunk opencv 自带 python java 的绑定, c#的 emgucv 也非常好用。然而考虑到效率,确实是会 C++就应该用 C++做的。
    @hp3325 当然有更好的选择比如 aardio 。界面可以用 html 做,好看多了。
    charlie21
        66
    charlie21  
       2016-06-19 18:27:28 +08:00
    @yxzblue @magicdawn @misaka19000 @ChiChou @SCaffrey
    electron 写完打包出来多大?
    junweiyang
        67
    junweiyang  
       2016-06-19 18:32:08 +08:00
    c# wpf
    magicdawn
        68
    magicdawn  
       2016-06-19 19:46:18 +08:00
    @charlie21 挺大...
    magicdawn
        69
    magicdawn  
       2016-06-19 19:46:55 +08:00
    钉叮是用 nw.js 写的, 跟 electron 类似, 可以参考下
    chocotan
        70
    chocotan  
       2016-06-19 20:37:38 +08:00
    @FrankHB java 桌面还有 javafx ,不过没什么人用的样子; eclipse 是 swt 吧
    “效果还是性能或者是实现质量普遍惨不忍睹”,这个就不太认同了, jetbrains 家的 ide 也是 java 开发的,界面、性能也还不错吧;还见过某贵金属交易客户端是用 swing 做的(某个亲戚在用,观摩了下界面还可以);我以前实习的一家日本公司也是开发 swing 深度定制的 erp 软件。
    apache 家的 jmeter 知道的同学也不少吧
    teamdev 封装了个 chromium ,叫 jxbrowser ,可以用 html 来开发 java 桌面程序了
    chengzi
        71
    chengzi  
       2016-06-19 22:29:09 +08:00
    wpf 部署复杂是因为.net 框架没有在 xp 上内置吗?其实现在一般用户使用 xp 的已经挺少了,网吧基本都 win7 了。现在的 xp 应该大部分都在企业内部的无法升级的哪些机子上吧,面向企业的装个.net 框架应该不是问题了。
    然后就是更新的问题,嫌麻烦,直接 clickOnce 就解决了。
    然后还有什么导致部署麻烦的?
    lsnl8480
        72
    lsnl8480  
       2016-06-19 22:56:45 +08:00
    随便选一个,先做出来再讲
    FrankHB
        73
    FrankHB  
       2016-06-20 04:16:08 +08:00
    @chocotan JavaFX 既做桌面又做 RIA ,看上去类似于 WPF 和 Silverlight 的混合,除去前途和用户数量问题,定位也感觉比较糊,所以就没提。
    “效果还是性能或者是实现质量普遍惨不忍睹”这方面严格来说不是全部都一样。例如 Swing 的默认 look & feel 一直跟 Windows 上常见的其它 app 很不搭,我也几乎没有见到过有在 Swing 基础上定制的产品; AWT 和 SWT 因为和原生 UI 有一腿所以实现比较脏。相比之下, SWT 还是比较能用的,但是写起来遇到一些不那么 eclipse 的需求嘛……
    要用 Java 开发出性能外观都过得去的东西也不算太难,但想要底层实现干净点(看得清楚而且容易改),那种东西还不存在。虽然后者一定程度上和语言无关(至少涉及 Win32 native GUI 的部分都不会好到哪去),但 Java 和 native code 的互操作加剧了这种混乱;相比之下.NET 做这个就容易多了。
    JetBrains 家的东西……不想说脏话,事实是我在 Windows 机器上体验过跟他们家有一腿的产品( Android Studio 、 IntelliJ IDEA ……)无一不是卡到几乎没法日用,如果不算打不开的话( CLion )。也就 ReSharper 能动得起来,但还是卡。虽然这也许是我只试用早期测试版本的原因(顺便,这些机器上都没 SSD ),但同样的机器 eclipse 也没那么夸张……更大的问题(和 Chrome 类似)是狂吃内存,开发机内存多少不是我说了算那就只能嗝屁了。不过这些性能问题应该不是 UI 的锅,卡顿是整体性的,和 UI 看上去关系不大。
    FrankHB
        74
    FrankHB  
       2016-06-20 04:27:19 +08:00
    @chengzi ClickOnce ……作为曾经在 GitHub Windows 客户端安装对话框上手动点过上百回确认然后十有八九被超时 /墙掉的冤大头,对这种中间挂了就强迫从头开始的流氓部署思维,我也真没有力气说脏话了……或者说能看到 Log 里的异常就该谢天谢地了?
    (至于为啥会傻点上百回呢——因为有好几次在好几个没法科学上网的环境里又没别的事情可做……)
    chengzi
        75
    chengzi  
       2016-06-20 09:18:09 +08:00
    @FrankHB 这个 qiang 的问题,怎么能怪到 ClickOnce 头上。自己写一个更新程序,下着下着网络断了,谁也没办法啊。按理来说能支持断点续传可以稍微避免这个问题,但这个东西也是好久没更新了
    FrankHB
        76
    FrankHB  
       2016-06-20 09:26:36 +08:00
    @chengzi 非正常环境非正常需求挂了我也能理解,但不管三七二十一只能一气呵成,自动把中间过程不留痕迹地干掉而不留下可能让用户干预改变默认操作的接口,那么……至少可以说是功能太弱。讲道理,断点续传这种二十年前就逐渐普及的东西在今天不支持显然不该是技术原因;而这导致实际体验远远不如传统的离线安装。看来得怪我在墙内咯……
    araraloren
        77
    araraloren  
       2016-06-20 09:30:35 +08:00
    ~~我的意见是,小工具基本用不着 GUI ,而且写这种东西脚本语言更适合
    ibugeek
        78
    ibugeek  
       2016-06-20 10:53:12 +08:00
    vs+qt ,了解一下马上就可以上手开发了,反正你界面的需求也不大。
    rubygba
        79
    rubygba  
       2016-06-20 11:17:57 +08:00
    都什么年代了,还有人用 C++做桌面应用(手动滑稽
    yanzidao
        80
    yanzidao  
       2016-06-20 12:15:43 +08:00
    @rubygba 那推荐用啥?
    littleshy
        81
    littleshy  
       2016-06-20 12:58:26 +08:00
    如果只考虑 windows 平台,有比 WPF 更适合的吗?
    chunqiuyiyu
        82
    chunqiuyiyu  
       2016-06-20 15:12:24 +08:00
    python ,我也有对图片文件预处理的需求。现在已经实现了一个小工具,拖入图片文件进行处理。
    hunk
        83
    hunk  
    OP
       2016-06-23 21:02:53 +08:00
    最后还是拿 pyqt 搞定了,写代码放控件,重写控件,也不难。

    下一步研究 opencv 如何提取身份证轮廓并剪裁。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:16 · PVG 22:16 · LAX 06:16 · JFK 09:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.