windows 桌面应用开发技术选择, C#/Qt/C++/? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gaoyadianta
V2EX    程序员

windows 桌面应用开发技术选择, C#/Qt/C++/?

 
  •   gaoyadianta 2018-04-12 16:57:21 +08:00 26741 次点击
    这是一个创建于 2742 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近需要开发个比较简单的 windows 桌面应用程序,之前是做嵌入式开发的对 c 比较熟悉,其他语言都不是很了解(包括 c++)。 麻烦大家推荐下用哪种技术开发比较合适呢?主要考虑上手出活要快一些,学了相关技术之后将来能在别的地方用的上就更好 不仅限于上面提到的,觉得好的都帮忙推荐下吧

    另外目前需要做的就是个配置用的工具软件,会用到串口,去和硬件设备通信

    第 1 条附言    2018-04-13 14:06:46 +08:00
    总结了下各位的建议,按照大家建议的频次来排序吧(意识流,没仔细数):
    C#+wpf/winform/CEF
    Qt
    pyqt
    delphi
    html+JS
    Lazarus
    java 9 with jlink / electron
    avaloniaUI
    aardio
    LabVIEW

    也供大家参考吧,我准备用 C#+winform 先搞一下
    第 2 条附言    2018-04-13 14:07:17 +08:00
    易语言
    go
    87 条回复    2021-08-11 01:50:22 +08:00
    gaoyadianta
        1
    gaoyadianta  
    OP
       2018-04-12 17:02:33 +08:00
    请大家帮帮忙,或者推荐下哪个节点比较合适问这个问题
    Akkariin
        2
    Akkariin  
       2018-04-12 17:04:09 +08:00
    c# +winform
    am241
        3
    am241  
       2018-04-12 17:05:29 +08:00 via Android
    c#,省事
    gaoyadianta
        4
    gaoyadianta  
    OP
       2018-04-12 17:06:12 +08:00
    @Akkariin
    @am241
    二位意见一致,看来 C#挺不错的,谢谢
    gaoyadianta
        5
    gaoyadianta  
    OP
       2018-04-12 17:06:51 +08:00
    @Akkariin
    @am241 有没有推荐的教程之类的
    plqws
        6
    plqws 
       2018-04-12 17:16:09 +08:00
    @gaoyadianta 微软官方的 MSDN 是最好的教程
    Droi
        7
    Droi  
       2018-04-12 17:16:48 +08:00
    也可以试试 QT,程序也方便做到开发板里。看自带的文档就够用了。
    https://download.qt.io/archive/qt/
    jasonyang9
        8
    jasonyang9  
       2018-04-12 17:17:07 +08:00
    在下觉得这块已经凉了。。。
    wackyjazz1
        9
    wackyjazz1  
       2018-04-12 17:19:01 +08:00
    C# + winform,要面好看一再配 DevExpress
    GGYB
        10
    GGYB  
       2018-04-12 17:21:35 +08:00
    c# + wpf 吧。mvvm 的思想,前端也能复用。
    shijingshijing
        11
    shijingshijing  
       2018-04-12 17:22:20 +08:00 via iPhone   1
    准备深入而且本身技能树是走嵌入式的话推荐 Qt,以后下位机,触控屏都可以接着用 Qt,还自带跨平台属性加成。就是 C++要求高,后续维护要找个水平好的才能接上手。

    如果不准备深入或者只是做个简单的界面,那果断 c#+winform,拖控件不要太爽,而且以后找新人接受也行。
    MinQ
        12
    MinQ  
       2018-04-12 17:45:18 +08:00 via Android
    C#+WPF/Winform 或者 pyqt 吧,C++写 QT 没两把刷子 hold 不住的
    doubleflower
        13
    doubleflower  
       2018-04-12 17:52:02 +08:00
    HTML + JS,出活快,不过上手比 C#慢

    C#没公司用,学精了也找不到工作的,而前端技术好找
    sgissb1
        14
    sgissb1  
       2018-04-12 17:53:19 +08:00
    你提到的所有语言都可以。

    但是易语言更简单,主要是招人方面都会比 c 类语言好弄得多。
    cdfmr
        15
    cdfmr  
       2018-04-12 18:00:38 +08:00
    会 Pascal 的话,其实 Lazarus 很不错。
    fgodt
        16
    fgodt  
       2018-04-12 18:03:47 +08:00
    wpf c# 最轻松的
    8023
        17
    8023  
       2018-04-12 18:04:13 +08:00 via Android
    qt,相当顺手,也方便后期移植。
    若确定将来不打算运行在除 win 的平台,c# WinForm 也可以。
    WildCat
        18
    WildCat  
       2018-04-12 18:04:50 +08:00 via iPhone
    java 9 with jlink / electron
    visonme
        19
    visonme  
       2018-04-12 18:05:32 +08:00
    window 下我还是推荐 C#,用 winform 还是 wpf 看要做的东西对界面的要求有多高了。
    如果熟悉 QT 也不错,用 QML 做界面比用 widget 好很多了
    gaoyadianta
        20
    gaoyadianta  
    OP
       2018-04-12 18:13:41 +08:00
    谢谢大家的回复,看来最简便的方式还是 C#
    我本身做嵌入式的,Qt 也是可选项
    yejinmo
        21
    yejinmo  
       2018-04-12 18:13:44 +08:00
    必然 C# 啊
    gaoyadianta
        22
    gaoyadianta  
    OP
       2018-04-12 18:14:07 +08:00
    @visonme winform 和 wpf 哪个复杂些,对界面要求不高
    fengyj
        23
    fengyj  
       2018-04-12 18:15:27 +08:00
    首选 C#+winFrom,然后就是 C++和 Qt 搭配啊。
    XinLake
        24
    XinLake  
       2018-04-12 18:18:01 +08:00
    现在的 windows 桌面主要是 NET。QT wxWidget GTK 那些也行,优势是跨平台不依赖操作系统组件,不过要玩得转要点内功,刚接触就算了。

    NET 微软推荐 C#,WPF 是比较现代,WinForm 很早就有了。

    底层硬件通讯方面,你需要用创建一个 VC++ Win32 (支持 64 位) DLL 工程来支持串口通讯功能,代码用 C 语言开发。C# 程序可以调用 DLL 来完成从 UI 到底层硬件通讯得任务,但是其中会有很多细节,微软官方文档一般都能找到有帮助得信息。
    shijingshijing
        25
    shijingshijing  
       2018-04-12 18:20:37 +08:00
    @gaoyadianta Winform 简单,都是标准预制件,做做槛控界面足够了。WPF 适合非标准界面,各种花里胡哨的界面只能选择 WPF。
    shijingshijing
        26
    shijingshijing  
       2018-04-12 18:22:37 +08:00   1
    @XinLake 不需要整 dll 这么复杂, .Net framework 从 2.0 就自带了串口 SerialPort 类,命名空间 System.IO.Ports,配合 MSDN 分分钟上手,微软的全家桶就是这么爽。
    gaoyadianta
        27
    gaoyadianta  
    OP
       2018-04-12 18:23:02 +08:00
    @shijingshijing 好的,基本清楚了
    @XinLake C#做串口通信这么复杂呢啊
    happinessnch
        28
    happinessnch  
       2018-04-12 18:24:42 +08:00
    C# + CEF
    gaoyadianta
        29
    gaoyadianta  
    OP
       2018-04-12 18:30:30 +08:00
    @happinessnch CEF 是什么
    TaylorJack123
        30
    TaylorJack123  
       2018-04-12 18:35:07 +08:00 via Android
    做过嵌入式开发的强烈推荐 QT,参照官方的例程,一天就能搞定一个简单的 App
    ioth
        31
    ioth  
       2018-04-12 18:39:35 +08:00
    delphi 7
    vb6
    XinLake
        32
    XinLake  
       2018-04-12 18:50:11 +08:00 via Android
    @shijingshijing
    @gaoyadianta
    我把 .net 的串口给忘了,.net 也行还方便。
    owenliang
        33
    owenliang  
       2018-04-12 18:53:07 +08:00
    QT 拖一拖吧
    youthdou
        34
    youthdou  
       2018-04-12 19:10:27 +08:00
    qt 适合跨平台 尤其对嵌入式。
    ysc3839
        35
    ysc3839  
       2018-04-12 19:17:07 +08:00 via Android
    @sgissb1 强烈不推荐易语言。
    首先是要收费,500 起步的价格。
    其次是无法版本管理,代码是私有二进制格式的。
    再者是本身的功能不足,比如不支持 Unicode。
    ysc3839
        36
    ysc3839  
       2018-04-12 19:18:19 +08:00 via Android
    @gaoyadianta Chromium Embedded Framework
    yazoox
        37
    yazoox  
       2018-04-12 19:24:37 +08:00 via Android
    @MinQ 不是吧,qt 有这么可怕啊……
    MinQ
        38
    MinQ  
       2018-04-12 19:31:30 +08:00 via Android
    @yazoox 不是可怕,而是 C++下面的 QT 不够简洁所以略麻烦,再加上 C++不是纯面向对象的,新手直接干有可能忘了自己回收内存 /搞出了野指针之类的,导致遇到奇奇怪怪的问题
    MinQ
        39
    MinQ  
       2018-04-12 19:32:44 +08:00 via Android
    @ysc3839 这玩意跑起来就跟开了个 chrome 一样,眼看着 CPU 占用率和内存占用哗哗往上涨啊
    justinwu
        40
    justinwu  
       2018-04-12 19:40:04 +08:00 via iPhone
    C# + winform,不二之选。

    曾经嵌入式多年的我,就是用这开发的串口工具,同事都说好用。

    OO 基础以及基本的 GUI 套路,都是通用的。
    zhfsxtx
        41
    zhfsxtx  
       2018-04-12 19:40:53 +08:00
    PythonAnswer
        42
    PythonAnswer  
       2018-04-12 20:05:10 +08:00 via Android
    喜欢干小活用 python 然后随便加个 ui
    ftexplore
        43
    ftexplore  
       2018-04-12 20:07:19 +08:00
    现在做新的桌面软件基本都是,用 HTML 做 UI,例如微软的 vscode
    alqaz
        44
    alqaz  
       2018-04-12 20:37:54 +08:00
    Qt
    omph
        45
    omph  
       2018-04-12 20:41:06 +08:00
    windows 当然用 winform,微软傻瓜化是出名的
    linux 当然用 qt
    imdong
        46
    imdong  
       2018-04-12 20:41:09 +08:00
    什么都不要说了,除非楼主自己业余小打小闹弄着玩可以试下搞一下易语言。
    否则任何条件下,都不建议使用易语言。

    当下 C#应该是比较主流的吧。
    jsq2627
        47
    jsq2627  
       2018-04-12 20:46:58 +08:00   4
    简单小工具:c# + winform
    界面复杂:c# + wpf
    只考虑 win10 平台:c# + uwp
    跨平台:html/js/electron
    跨平台大型 GUI 应用:qt
    baixiangcpp
        48
    baixiangcpp  
       2018-04-12 20:51:31 +08:00
    熟练使用 C++的情况下用 qt
    bookit
        49
    bookit  
       2018-04-12 20:51:55 +08:00
    这块早就凉了,

    所以最佳方案是下载一串口配置的开源代码改改就行
    defphilip
        50
    defphilip  
       2018-04-12 20:54:08 +08:00
    Qt
    aminic
        51
    aminic  
       2018-04-12 21:21:31 +08:00 via Android
    好上手体验舒服的也就c# winform wpf
    iwtbauh
        52
    iwtbauh  
       2018-04-12 21:48:16 +08:00 via Android
    其实,GTK+ 也可以在 Windows 上跑
    fancymax
        53
    fancymax  
       2018-04-12 21:55:27 +08:00 via iPhone
    @cdfmr 比 delphi 差远了啊
    Linko
        54
    Linko  
       2018-04-12 22:10:07 +08:00
    C# + winform
    Wicked
        55
    Wicked  
       2018-04-12 23:04:31 +08:00 via iPhone
    推荐 Qt,跨平台,丰富的文档和教程,完备的功能支持
    XinLake
        56
    XinLake  
       2018-04-12 23:44:45 +08:00 via Android
    Qt、GTK 做单纯的 GUI 跨平台还行,像网站 APP 那样几乎就是个移动设备上的前端,只要 GUI 就好没啥功能,那样还行。

    要是涉及到 APP 能力,如视频解码、3D 图形、图像处理、机器视觉、本地 AI 计算,这时 APP 可能需要使用硬件计算能力,那还是操作系统本身的 APP 框架好点,和系统其他组件结合得更好,问题少,效率更高。
    cchange
        57
    cchange  
       2018-04-12 23:46:03 +08:00
    WPF 看起来真心不错 不知道是否有开源的实现,不太喜欢网页技术……
    MinQ
        58
    MinQ  
       2018-04-13 00:14:17 +08:00 via Android
    @cchange avaloniaUI,开源跨平台
    g00001
        59
    g00001  
       2018-04-13 01:19:42 +08:00   2
    用 aardio 简单,小、轻、快、调用 C 语言接口方便。


    像这种漂亮的界面,用 aardio 分分钟拖出来,生成的 EXE 才 1MB 多一点,用其他开发工具要搞到什么时候。

    至于串口,看 aardio 写的串口调试助手

    就是几句代码的事。
    ysc3839
        60
    ysc3839  
       2018-04-13 01:29:22 +08:00
    @MinQ 是的,但是仍然有很多软件使用。
    MinQ
        61
    MinQ  
       2018-04-13 06:53:30 +08:00 via Android
    @ysc3839 我自己就是受害者之一啊,以前写过一个触摸大屏软件,要处理地图信息,最后选了 WPF+CEF,在那个破工控机上跑的,经常怀疑人生
    KaoN
        62
    KaoN  
       2018-04-13 07:02:10 +08:00 via Android
    @XinLake Qt 做 3d 应该完全没问题
    hotsymbol
        63
    hotsymbol  
       2018-04-13 08:41:59 +08:00
    用 MFC+C#吧 坑不死你
    weizhen199
        64
    weizhen199  
       2018-04-13 09:10:54 +08:00
    这种东西还是 Qt 比较好。
    winform 有点过期了。
    wpf,破机器会卡
    ibugeek
        65
    ibugeek  
       2018-04-13 09:31:41 +08:00
    C#或 Qt,上手快得不行。
    mohoumk2
        66
    mohoumk2  
       2018-04-13 09:32:53 +08:00 via Android
    c#
    nicevar
        67
    nicevar  
       2018-04-13 09:38:46 +08:00
    熟悉 C++的用 Qt 最快最省事了,以后要用在其他平台上也方便,现在一般的工具我都用 Qt 写
    skadi
        68
    skadi  
       2018-04-13 09:42:59 +08:00
    qt
    lvsemi1
        69
    lvsemi1  
       2018-04-13 10:02:49 +08:00 via Android
    我说 unity3d 会不会被打
    hws8033856
        70
    hws8033856  
       2018-04-13 10:09:05 +08:00
    上面说 C#+CEF 以及 WPF 的明显都不适合楼主的技术栈和快速出活的需求,因为这两者都要求用标记语言(html;xaml)做前端
    macha
        71
    macha  
       2018-04-13 10:19:35 +08:00
    我感觉 C#的 winform 比较合适。界面分分钟拖出来。追求短平快 C++首先被排除。
    thuai
        72
    thuai  
       2018-04-13 11:21:51 +08:00
    Qt 如果会 Python 的话,就 PyQt。快的一逼
    timsensor
        73
    timsensor  
       2018-04-13 11:28:32 +08:00
    MS .net 部署可能会遇到问题。
    我推荐 QT,坑小
    yunji3344
        74
    yunji3344  
       2018-04-13 11:33:36 +08:00
    怎么说人说 delphi
    liuminghao233
        75
    liuminghao233  
       2018-04-13 11:57:43 +08:00 via iPhone
    不跨平台就 wpf
    要写一套放 mac win linux 就 qt

    其他不考虑
    MinQ
        76
    MinQ  
       2018-04-13 12:36:03 +08:00 via Android
    @liuminghao233 其实现在 WPF 也能跨平台了…… https://github.com/AvaloniaUI/Avalonia
    mercurygear
        77
    mercurygear  
       2018-04-13 12:37:16 +08:00
    WTL
    tamlok
        78
    tamlok  
       2018-04-13 12:49:12 +08:00 via Android
    @MinQ qt 有 qobject 管理,一般不会有野指针
    Narcissu5
        79
    Narcissu5  
       2018-04-13 12:55:01 +08:00
    WPF 和 WinForm 的最大不同在于 WPF 是使用显卡渲染的,WinForm 用的是系统控件。WPF 本来就是针对现代机器设计的,配置不好会卡是肯定的,反过来说,配置好的机器不用 WPF 就是浪费
    MinQ
        80
    MinQ  
       2018-04-13 13:00:41 +08:00 via Android
    @tamlok 我指的是你自己写功能代码的时候如果没踩过坑的话容易翻车
    g00001
        81
    g00001  
       2018-04-13 13:07:08 +08:00
    C#跟 Java 一样属于重型开发工具,如果是专业玩 C#准备投入三五年的全职时间可以玩,快速开发还是算了吧,C#写的软件需要.Net 运行库部署麻烦,另外 C#写的软件用反编译工具可以还原出全部的 C#源代码,连工程文件都可以还原出来。当然,如果不介意别人分享你的源代码,就没什么问题了。

    electron 有同样的问题,用 js 写的软件很难真正保护源代码.而且 electron 不支持 win7 sp1 以下系统,另外一个是发行体积大:

    MinQ
        82
    MinQ  
       2018-04-13 13:10:18 +08:00
    @g00001 核心代码封装成 C++的 DLL 或者加混淆,Java 也有同样的毛病,安卓的 APK 天天被人逆向来逆向去的,还不是一样是混淆或者塞 JNI 里
    Narwhal
        83
    Narwhal  
       2018-04-13 13:50:40 +08:00
    这个帖子里没人讨论 labview 么
    gaoyadianta
        84
    gaoyadianta  
    OP
       2018-04-13 13:59:03 +08:00
    @Narwhal 哈哈,其实我之前就是玩 labview 的,不过觉得那东西安装啥的还是麻烦了,以后想换一个
    Clarencep
        85
    Clarencep  
       2018-04-13 14:04:25 +08:00
    没有人说 go 语言吗?建议试用下 go,搭配 lxn/walk 库,C 语言用户肯定都喜欢 go 的。
    cchange
        86
    cchange  
       2018-04-14 22:02:58 +08:00 via iPhone
    @MinQ 多谢 希望这个库能一直发展下去
    aaniao002
        87
    aaniao002  
       2021-08-11 01:50:22 +08:00 via Android
    要快的话走 qt 线路,要定制要大众要跨平台走 html 线路,win 全家桶不建议,啊三味太浓。
    关于     帮助文档     自助推广系统     博客     API       Solana     917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 20:49 PVG 04:49 LAX 13:49 JFK 16:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86