Qt本身使用qmake进行编译的,但是CLion使用cmake进行组织管理,因此,在CLion中使用Qt需要一些特殊的cmake设置。
新建工程
打开CLion,新建project,工程名称为Widget
修改cmakelist文件
新建的工程,自动包含一个cmakelist.txt和main.cpp文件。要使工程可以使用Qt5的UI和信号槽机制,则需要分别包含UIC功能和MOC。打开cmakelist.txt,修改如下
cmake_minimum_required(VERSION 3.3)
project(Widget)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
find_package(Qt5Widgets)
set(SOURCE_FILES main.cpp Widget.cpp Widget.h)
add_executable(Widget ${SOURCE_FILES})
target_link_libraries(Widget Qt5::Widgets)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
新建Qt的UI文件
打开Qt designer,设计UI,
Widget.h最终代码如下:
#include <QtWidgets/QWidget>
#include "ui_widget.h"
class Widget : public QWidget {
Q_OBJECT
public:
Widget(QWidget* parent = 0);
~Widget();
private slots:
void slotPushButton();
private:
Ui::Widget ui;
int m_iCount;
};
Widget.cpp最终代码如下:
#include "Widget.h"
Widget::Widget(QWidget* parent)
: QWidget(parent)
{
m_iCount = 0;
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotPushButton()));
}
Widget::~Widget() {
}
void Widget::slotPushButton() {
++m_iCount;
ui.lineEdit->setText(QString::number(m_iCount));
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
修改main文件
main.cpp最终结果为:
#include <QtWidgets/QApplication>
#include "Widget.h"
int main(int argc, char* argv[]) {
QApplication a(argc, argv);
Widget w;
w.setGeometry(500, 200, 320, 240);
w.show();
return a.exec();
}
编译运行
Ctrl+F9,编译
shift+F10,运行

转自:http://blog.youkuaiyun.com/chlk118/article/details/49884335