在CLion中使用Qt

来源:互联网 发布:windows phone 10安卓 编辑:程序博客网 时间:2024/05/16 02:05

做这件事的起因是因为自己要频繁的写ROS,有的应用难免需要采用图形界面编程,第一想到的肯定是Qt。然而qt使用自己的qmake进行管理,但ROS使用的是CMake。本文介绍了如何在CLion中配置使用qt4。

Qt编译框架

  1. Qt引用了信号和槽机制,因此在语法上对C++进行了部分扩充,qt提供了moc软件对代码进行预处理。
  2. Qt的ui文件需要用uic软件生成ui_filename.h文件供qt中的代码文件来引用。

CMakelist配置

有了上面的两条补充知识,具体操作也很清楚了。我们只要在传统CMakelists.txt上加上moc和uic操作即可。具体为如下两条:

QT4_WRAP_UI(UI widget.ui)QT4_WRAP_CPP(UI_CPP  Widget.h)

处理后的文件名为UI和UI_CPP,在需要的地方引用即可。

实例

文件目录

.├── bin│   └── learn_qt_clion├── CMakeLists.txt├── main.cpp├── Widget.h└── widget.ui

CMakelist.txt

cmake_minimum_required(VERSION 3.6)project(learn_qt_clion)set(CMAKE_INCLUDE_CURRENT_DIR  on)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)find_package(Qt4 REQUIRED)include(${QT_USE_FILE})include_directories(${Qt4_INCLUDE_DIRECTORIES})include_directories(/usr/include)QT4_WRAP_UI(UI widget.ui)QT4_WRAP_CPP(UI_CPP  Widget.h)set(SOURCE_FILES  main.cpp  ${UI_CPP})add_executable(learn_qt_clion ${SOURCE_FILES})target_link_libraries(learn_qt_clion ${QT_LIBRARIES} )

main.cpp

#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();}

Widget.h

//// Created by meng on 16-11-16.//#ifndef LEARN_QT_CLION_WIDGET_H#define LEARN_QT_CLION_WIDGET_H#include <QtGui/QtGui>#include <QtCore/QtCore>#include <QtCore/QObject>#include "ui_widget.h"class Widget : public QWidget {    Q_OBJECTpublic:    Widget(QWidget* parent = 0){        m_iCount = 0;        ui.setupUi(this);        connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotPushButton()));    }    ~Widget(){}private slots:    void slotPushButton(){        ++m_iCount;        ui.lineEdit->setText(QString::number(m_iCount));    }private:    Ui::Form ui;    int m_iCount;};#endif //LEARN_QT_CLION_WIDGET_H

运行结果

这里写图片描述

0 0