- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解如何配置CLion作为Qt5开发环境的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
使用Qt进行程序开发时QtCreator总是不二之选。作为老牌IDE在提供了强大的功能同时也对Qt的支持做了许多优化。如果没有特别的原因你应该使用它.
然而一个顺手的工具将会极大得提升生产效率,而如果你之前使用别的工具进行开发,那么就要斟酌一下学习使用QtCreator的成本了.
所以我将介绍配置CLion(另一个强大的c++ IDE)作为Qt5的开发环境,在利用现有工具链的同时避免了安装另一个大型软件.
CLion的安装和激活超出了本文的讨论范围,我们假设你已经安装好了CLion。如果需要帮助可以去CLion官网查找安装方法.
CLion默认使用GCC进行工程构建,然而使用GCC是无法使用代码补全功能的,所以我们将toolchains替换成clang:
注意,CLion自带了一个cmake,如果我们想使用系统提供的一些cmake模块,那么就必须如图所示替换为系统的cmake.
随后确保你的编译器至少要支持c++11,如果能支持c++14或者c++17那自然是最好.
下面是创建Qt5项目,CLion没有区分普通c++项目和Qt项目(毕竟Qt项目一般也是c++项目或者c++/QML项目),所以这样创建即可:
创建完成后项目结构如图所示:
cmake-build-release目录是生成moc等工具的中间代码以及可执行文件的地方,当然可执行文件的生成路径可以自己指定,这是CLion默认的选项.
这时编译运行和代码补全还是不能用的,所以接下来我们设置编译和代码补全.
事先要说明的一点是,CLion是根据CMakeLists.txt文件来组织和设置项目的,所以如果我们需要添加诸如Qt这样的第三方库或是改变编译行为,都只要修改CMakeLists.txt即可.
所以我们需要把CMakeLists.txt修改成如下的样子:
cmake_minimum_required(VERSION 3.0)project(test)# 指定c++标准的版本set(CMAKE_CXX_STANDARD 17)# 自动调用moc,uic,rcc处理qt的扩展部分set(CMAKE_AUTOMOC ON)set(CMAKE_AUTOUIC ON)set(CMAKE_AUTORCC ON)# 设置Qt5的cmake模块所在目录,如果不设置将使用系统提供的版本# QT_DIR和QT_VERSION是指定了qt安装目录和版本的环境变量# 如果你使用了系统的cmake,那么会优先使用系统提供模块,因为cmake会优先搜索CMAKE_SYSTEM_PREFIX_PATH# 如果你不想让cmake优先搜索系统目录(会导致编译使用系统安装的qt而不是我们配置的),需要提示find_package命令set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{QT_DIR}/$ENV{QT_VERSION}/gcc_64/lib/cmake)# 找到对应的qt模块,名字为qmake中QT += <name>中的name首字母大写后加上Qt5前缀# 例如core为QtCore,你也可以去${CMAKE_PREFIX_PATH}的目录中找到正确的模块名# 如果不想使用系统qt,这样写(注意NO_DEFAULT_PATH参数,它会让find_package跳过系统目录的查找):find_package(Qt5Widgets REQUIRED NO_DEFAULT_PATH)# 如果你想要使用系统自带的qt,这样写:# find_package(Qt5Widgets REQUIRED)# 将当前目录的所有源文件添加进变量aux_source_directory(. DIRS_SRCS)# 通常这样设置就可以,如果你的项目包含qrc文件,那么需要将它们单独添加进来# 例如add_executable(test ${DIRS_SRCS} resources.qrc)add_executable(test ${DIRS_SRCS})# 把对应Qt模块的库链接进程序target_link_libraries(test Qt5::Widgets)
值得注意的是,使用系统提供的Qt的一个好处是编译出来的程序可以使用系统的样式和主题,但缺点是版本可能会与我们想使用的不一致从而产生错误.
修改之后点击图中的Reload changes:
CLion会自动生成新的Makefile用于编译项目,现在代码补全也可以使用了.
我们先写一个小的示例,让一个spinbox和slider可以相互联动:
#include <QApplication>#include <QFormLayout>#include <QtGlobal>#include <QObject>#include <QSlider>#include <QSpinBox>#include <QWidget>int main(int argc, char *argv[]){ QApplication app(argc, argv); auto window = new QWidget; auto spinBox = new QSpinBox; spinBox->setRange(0, 100); auto slider = new QSlider; slider->setRange(0, 100); QObject::connect(spinBox, // 对于重载函数需要给出确定的版本,QOverload需要编译器支持c++11 QOverload<int>::of(&QSpinBox::valueChanged), slider, &QSlider::setValue); QObject::connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue); auto layout = new QFormLayout; layout->addRow("spin box:", spinBox); layout->addRow("slider:", slider); window->setLayout(layout); window->show(); return app.exec();}
然后我们点击int main(...)左侧的运行按钮:
程序就开始编译了:
如果编译成功程序就会自动运行:
至此CLion已经可以正常配合Qt进行开发.
对于i18n以及qt rcc的支持,可以参考这篇文章.
到此这篇关于详解如何配置CLion作为Qt5开发环境的方法的文章就介绍到这了,更多相关CLion配置Qt5开发环境 内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.cnblogs.com/apocelipes/p/10353698.html 。
最后此篇关于详解如何配置CLion作为Qt5开发环境的方法的文章就讲到这里了,如果你想了解更多关于详解如何配置CLion作为Qt5开发环境的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!