Qt5开发环境的选择

Qt5开发环境的选择_第1张图片

 

1.背景介绍

作者本人最近受朋友所托,让帮助写个上位机的小程序,方便他直观的处理自己采集的数据,由于需要得底层硬件打交道,因此需要处理的数据都是16进制数。作者目前所在团队使用的上位机软件是LabVIEW,这款软件是NI公司的产品,主要是配合他们公司的数据采集卡使用,因此在数据采集上很有优势,特别是使用图形化的语言,上手开发速度比较快。由于作者个人原因,不太喜欢LabVIEW那种编程方式,还是喜欢C/C++这种可以把底层数据处理掌握在手中的感觉,因此对比了多种图形界面库后,选择了Qt5。选择Qt除了可以制作图形界面外,还包括很多其它的功能,比如多线程、数据库、网络通信、文件操作、串口通信等,有了这些功能,我就可以在Qt这个框架下完成几乎所有的工作,不用再使用其它第三方库,方便了后续代码的移植。关于版权方面,目前没有考虑用Qt来盈利,所以就直接使用Qt5的开源版了,不过好像有针对小企业的499美金/年的价格,感觉还是挺合适的,不过在没有盈利之前感觉买来还是有点贵。

本文主要交流一下我对Qt5开发环境的选择,其中遇到了一些坑,算是和大家交流一下。

2.QtCreator

QtCreator是官方发布的IDE,如果没有特殊要求,能用官方的就用官方的,其实也不是太差。不过个人觉得,和VS比功能上还是差点,特别是对工程的配置,感觉总是有点别扭,很多时候都看不懂是什么意思。还有就是明明装了个中文版的开发环境,结果菜单上还有很多地方是英文的,如下图所示,虽然不影响使用,但是对于一个强迫症来说,确实有点闹心。

Qt5开发环境的选择_第2张图片

3.CLion

CLion我觉得目前是除了Visual Studio之外最好用的开发C/C++的IDE了,特别是我有教育优惠账号,可以长期白嫖,而且整个软件相对Visual Studio的体积来说要小的多,加上跨平台的特性,我还真想把它做为我的主力开发工具。但是在用CLion配置Qt5的开发过程中,当使用QtChart库的时候,总是出问题,特别是把Widget控件提升成QChartView之后,再运行程序就会莫名奇妙的闪退,使用了QT_CHARTS_USE_NAMESPACE之后也还是闪退,这不得不让我放弃CLion。

下面我展示一下我出现的错误,如果哪位知道问题在哪,可以交流一下。我的目的很简单,就是想用QtChart画个图,首先我用CLion新建了Qt UI类,然后在生成的ui界面上拖了个widget控件,并提升成QChartView了。

Qt5开发环境的选择_第3张图片

Qt5开发环境的选择_第4张图片

代码主要有CMakeLists.txt,main.cpp,mainwindow.cpp,mainwindow.h,ui_mainwindow.h

其中CMakeLists.txt的代码如下:

cmake_minimum_required(VERSION 3.22)
project(untitled1)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017/lib/cmake")

find_package(Qt5 COMPONENTS
        Core
        Gui
        Widgets
        Charts
        REQUIRED)

add_executable(untitled1 main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
target_link_libraries(untitled1
        Qt5::Core
        Qt5::Gui
        Qt5::Widgets
        Qt5::Charts
        )

其中main.cpp代码如下:

#include 
#include 

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QPushButton button("Hello world!", nullptr);
    button.resize(200, 100);
    button.show();
    return QApplication::exec();
}

mainwindow.h代码如下:

#ifndef UNTITLED1_MAINWINDOW_H
#define UNTITLED1_MAINWINDOW_H

#include 


QT_BEGIN_NAMESPACE
namespace Ui { class mainwindow; }
QT_END_NAMESPACE

class mainwindow : public QMainWindow {
Q_OBJECT

public:
    explicit mainwindow(QWidget *parent = nullptr);

    ~mainwindow() override;

private:
    Ui::mainwindow *ui;
};


#endif //UNTITLED1_MAINWINDOW_H

ui_mainwindow.h代码如下:

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include 
#include 
#include 
#include 
#include "qchartview.h"
QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE

class Ui_mainwindow
{
public:
    QWidget *centralWidget;
    QChartView *widget;

    void setupUi(QMainWindow *mainwindow)
    {
        if (mainwindow->objectName().isEmpty())
            mainwindow->setObjectName(QString::fromUtf8("mainwindow"));
        mainwindow->resize(400, 300);
        centralWidget = new QWidget(mainwindow);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        widget = new QChartView(centralWidget);
        widget->setObjectName(QString::fromUtf8("widget"));
        widget->setGeometry(QRect(10, 80, 381, 211));
        mainwindow->setCentralWidget(centralWidget);

        retranslateUi(mainwindow);

        QMetaObject::connectSlotsByName(mainwindow);
    } // setupUi

    void retranslateUi(QMainWindow *mainwindow)
    {
        mainwindow->setWindowTitle(QCoreApplication::translate("mainwindow", "mainwindow", nullptr));
    } // retranslateUi

};

namespace Ui {
    class mainwindow: public Ui_mainwindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

mainwindow.cpp代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"


mainwindow::mainwindow(QWidget *parent) :
        QMainWindow(parent), ui(new Ui::mainwindow) {
    ui->setupUi(this);
}

mainwindow::~mainwindow() {
    delete ui;
}

点运行程序,程序直接结束,连界面都不出,报下图的错误。

这个问题想了很多的办法解决,比如说注释掉QChartView控件,然后有的时候会跑通,有的时候就跑不通。改了一下CMakeLists.txt里面的QtChart库,也不行,测试了很多也解决不了,不得不放弃用CLion开发Qt的想法。如果哪位朋友知道怎么解决这个问题,麻烦赐教一下。

4.Visual Studio

经历了CLion总是闪退的问题,不得不考虑其它的开发环境了。想用CLion做为开发环境还有一个原因就是它是用CMake管理整个工程,方便后续向Linux平台迁移。不过目前的开发还主要是在Windows环境下,想想还是先把功能做出来,迁移的事情后续再考虑。如果不是为了用CMake,其实在QtCreator下用qmake已经可以使用QtChart了,而且非常方便,基本上不用配置什么内容,但是不太喜欢QtCreator,也不想学习qmake,就考虑使用Visual Studio开发Qt。在Windows平台上肯定是Visual Studio最好用了,但是想到它那巨大的体积,实在是没法忍受。要不是CLion总是闪退,肯定不会考虑用Visual Studio的,为了这个还特意安装了Visual Studio 2022版本,虽然只装了个C++的功能,就占了8G,太恐怖了。Visual Studio体积大归大,使用起来还是挺方便的,在扩展里面安装了个Qt VS tools插件,简单配置了一下,把原来在CLion工程里写的那几句关键代码移过来,很快就跑出了结果。如下图所示:

Qt5开发环境的选择_第5张图片

现在的Qt VS tools好像可以不用配置Qt的pro文件了,直接按正常的C++编程配置方式就可以把各个第三方的库加进来,还是挺方便的。

5.结语

目前能写Qt的开发环境应该有很多,就我个人来说,我还是倾向于CLion和Visual Studio的,毕竟这两个IDE的影响力比较大,特别是CLion是跨平台的,后期可以省很多事。这次为了使用QtChart功能,可能遇到了一些小Bug导致没有在CLion下运行成功,不过后续如果解决了这个问题,可能还会再迁回来CLion的。Visual Studio就不说了,windows环境下的首先IDE,功能强大,使用方便,就是太大了。

你可能感兴趣的:(Qt5,qt5,c++,visual,studio)