VSCode+CMake+Qt4简单例子记录一

  因为要写界面,所以开始学习使用Qt,写点博客记录学习过程中使用的例子与大家交流一下。例子包含完整代码。下面这个例子是计算圆面积的,显示一个对话框,在上面输入半径后显示出面积。本例来自陆文周老师所著的《Qt5开发及实例》(第3版),我按照自己的习惯与环境做了一些修改。

1、环境

操作系统:Ubuntu 16.0.4 64位桌面版
        IDE:Visual Studio Code 1.30.2
构建工具:CMake 3.5.1
        GUI:Qt 4.8.7

2、文件

  需要手工(或半手工)编写的文件有:main.cpp、dialog.h、dialog.cpp、CMakeLists.txt与c_cpp_properties.json。目录结构如下图:
VSCode+CMake+Qt4简单例子记录一_第1张图片

1)main.cpp
/**
* \file main.cpp
* \brief 主程序
* 
* \copyright free
* \author 略
* \email 略
* \version 略
* \date 略
* \since 略
*/
#include 
#include 
#include "dialog.h"

int main(int argc, char *argv[]) {
  QApplication a(argc, argv);
  // 解决中文显示问题
  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
  QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

  Dialog dialog;
  dialog.show();
	
  return a.exec();
}
2)dialog.h
/**
* \file dialog.h
* \brief Dialog类头文件
* 定义Dialog类。
* \copyright free
* \author 略
* \email 略
* \version 略
* \date 略
* \since 略
*/
#ifndef EXERCISE001_SRC_DIALOG_H_
#define EXERCISE001_SRC_DIALOG_H_

#include 
#include 
#include 
#include 

class Dialog : public QDialog {
  Q_OBJECT  // 启动Qt对象系统的一些特性(如支持信号和槽等)
 public:
  Dialog(QWidget *parent = 0);
  ~Dialog();
 private:
  QLabel *label1_;
  QLabel *label2_;
  QLineEdit *line_edit_;
  QPushButton *button_;
 private slots:
  void ShowArea(void);
};

#endif  // EXERCISE001_SRC_DIALOG_H_
3)dialog.cpp
/**
* \file dialog.cpp
* \brief Dialog类实现文件
* Dialog类实现代码。
* \copyright free
* \author 略
* \email 略
* \version 略
* \date 略
* \since 略
*/
#include "dialog.h"
#include 

const static double PI = 3.1416;

Dialog::Dialog(QWidget *parent) : QDialog(parent) {
  this->setWindowTitle("计算圆面积");
  label1_ = new QLabel(this);
  label1_->setText(tr("请输入圆的半径:"));
  line_edit_ = new QLineEdit(this);
  label2_= new QLabel(this);
  button_ = new QPushButton(this);
  button_->setText(tr("显示对应圆的面积"));
  QGridLayout *main_layout=new QGridLayout(this);
  main_layout->addWidget(label1_,0,0);
  main_layout->addWidget(line_edit_,0,1);
  main_layout->addWidget(label2_,1,0);
  main_layout->addWidget(button_,1,1);
  connect(button_, SIGNAL(clicked()), this, SLOT(ShowArea()));
  connect(line_edit_, SIGNAL(textChanged(QString)), this, SLOT(ShowArea()));
}

Dialog::~Dialog() {

}

// \brief 计算圆面积
void Dialog::ShowArea(void) {
  bool ok;
  QString temp_str;
  QString radius_str = line_edit_->text();
  double radius = radius_str.toDouble(&ok);
  double area = radius * radius * PI;
  label2_->setText(temp_str.setNum(area));
  return;
}
4)CMakeLists.txt
#// CSDN 陆巍的博客:https://blog.csdn.net/weixin_44420912
# 指定运行此配置文件所需的CMake最低版本
cmake_minimum_required(VERSION 3.0)

# 项目名称
project(exercise001)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

# 为Qt目标自动处理moc。
set(CMAKE_AUTOMOC ON)

# 搜索Qt4相关库
find_package(Qt4 REQUIRED)

include(${QT_USE_FILE})

# 在源文件编译中添加-D定义标志
add_definitions(-std=c++11)

# 搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中
aux_source_directory(src/ DIR_SRCS)

# 使用给定的源文件,为工程引入一个可执行文件
add_executable(${PROJECT_NAME} ${DIR_SRCS})

# 添加链接库,相同于指定-l参数
target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES})
5)c_cpp_properties.json
{
  "configurations": [
      {
          "name": "Linux",
          "includePath": [
              "/usr/share/qt4/mkspecs/linux-g++-64",
              "/usr/include/qt4/QtCore",
              "/usr/include/qt4/QtGui",
              "/usr/include/qt4"
          ],
          "defines": [],
          "compilerPath": "/usr/bin/gcc",
          "cStandard": "c11",
          "cppStandard": "c++17",
          "intelliSenseMode": "clang-x64",
          "compileCommands": "${workspaceFolder}/build/compile_commands.json"
      }
  ],
  "version": 4
}

编译后运行的效果如下:
VSCode+CMake+Qt4简单例子记录一_第2张图片
补充说明:
  1)我使用的Qt4是直接在终端中输入命令“sudo apt install qt4-dev-tools”安装的;
  2)在编写完CMakeLists.txt文件后,我这里并没有立刻在窗口下面出现“build”的按钮,要关闭VSCode后再打开才会出现,具体原因没有去了解,目前并不影响工作。
  3)c_cpp_properties.json文件主要提供Qt头文件目录的,如果没有的话,在包含Qt头文件的地方会有提示。这个文件由系统生成,但需要自己在此文件中设置头文件的路径。

你可能感兴趣的:(Qt)