主程序入口:

#include <iostream>
#include <QApplication>
#include "MainWindow.h"
int main(int argc,char *argv[]) {
//创建程序
QApplication app(argc,argv);
//创建窗口
MainWindow w;
//显示窗口
w.show();
return QApplication::exec();
}

MainWindow.cpp代码:

//
// Created by wt on 2020/6/5.
// #include "MainWindow.h" MainWindow::MainWindow(QWidget* parent):QWidget(parent) {
//初始化界面
initUI();
//设置回调
setCallBack();
//处理信号和槽
this->bindSignalAndSlot();
} void MainWindow::initUI() {
setFixedSize(600, 800);
//布局
QFormLayout *layout = new QFormLayout;
//ip输入框
ipEdit = new QLineEdit("192.168.36.23");
//端口输入框
portEdit = new QLineEdit("30003"); //连接状态
statusLabel = new QLabel("未连接"); //连接机械臂按钮
connectBtn = new QPushButton("连接机械臂");
disConnectBtn = new QPushButton("断开连接"); //movej的每一个关节输入
joint1Edit = new QLineEdit("-144.98");
joint2Edit = new QLineEdit("-97.67");
joint3Edit = new QLineEdit("-102.98");
joint4Edit = new QLineEdit("-68.95");
joint5Edit = new QLineEdit("83.07");
joint6Edit = new QLineEdit("58.15"); //movej
movejBtn = new QPushButton("moveJ"); //movel输入
xEdit = new QLineEdit("0.99");
yEdit = new QLineEdit("-355.35");
zEdit = new QLineEdit("191.15");
rxEdit = new QLineEdit("2.8321");
ryEdit = new QLineEdit("1.1774");
rzEdit = new QLineEdit("-0.0290"); //movel
movelBtn = new QPushButton("moveL"); //添加
layout->addRow("ip", ipEdit);
layout->addRow("port", portEdit);
layout->addRow("连接状态", statusLabel);
layout->addRow("", connectBtn);
layout->addRow("", disConnectBtn); layout->addRow("关节1:", joint1Edit);
layout->addRow("关节2:", joint2Edit);
layout->addRow("关节3:", joint3Edit);
layout->addRow("关节4:", joint4Edit);
layout->addRow("关节5:", joint5Edit);
layout->addRow("关节6:", joint6Edit); layout->addRow("", movejBtn); layout->addRow("x:", xEdit);
layout->addRow("y:", yEdit);
layout->addRow("z:", zEdit);
layout->addRow("rx:", rxEdit);
layout->addRow("ry:", ryEdit);
layout->addRow("rz:", rzEdit); layout->addRow("", movelBtn); //设置布局
setLayout(layout);
} MainWindow::~MainWindow() { } void MainWindow::bindSignalAndSlot() {
//连接和断开连接
connect(connectBtn,&QPushButton::clicked,[this]{
QString ip = ipEdit->text();
int port = portEdit->text().toInt();
URDriver::getInstance()->connectToRobot(ip,port);
});
connect(disConnectBtn,&QPushButton::clicked,[this]{
URDriver::getInstance()->disConnectToRobot();
});
//movej
connect(movejBtn,&QPushButton::clicked,this,&MainWindow::movej);
//movel
connect(movelBtn,&QPushButton::clicked,this,&MainWindow::movel);
} void MainWindow::setCallBack() {
//连接回调
URDriver::getInstance()->setConnectCallback([this]{
//更新界面
this->statusLabel->setText("已连接");
});
URDriver::getInstance()->setDisConnectCallback([this]{
//更新界面
this->statusLabel->setText("断开连接");
});
} void MainWindow::movej() {
//获取留个关节角度(转换弧度值)PI 180
double joint1 = joint1Edit->text().toDouble()*DEGREEETORA;
double joint2 = joint2Edit->text().toDouble()*DEGREEETORA;
double joint3 = joint3Edit->text().toDouble()*DEGREEETORA;
double joint4 = joint4Edit->text().toDouble()*DEGREEETORA;
double joint5 = joint5Edit->text().toDouble()*DEGREEETORA;
double joint6 = joint6Edit->text().toDouble()*DEGREEETORA;
//保存6个关节角度
double joints[6]{joint1,joint2,joint3,joint4,joint5,joint6};
//movej移动
URDriver::getInstance()->movej(joints);
} void MainWindow::movel() {
//位置和姿态
double x = xEdit->text().toDouble()/1000;
double y = yEdit->text().toDouble()/1000;
double z = zEdit->text().toDouble()/1000;
double rx = rxEdit->text().toDouble();
double ry = ryEdit->text().toDouble();
double rz = rzEdit->text().toDouble();
//保存位置和姿态
double pos[6]{x,y,z,rx,ry,rz};
URDriver::getInstance()->movel(pos);
}

MainWindow.h代码:

//
// Created by wt on 2020/6/5.
// #ifndef URDRIVER_MAINWINDOW_H
#define URDRIVER_MAINWINDOW_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QFormLayout>
#include <iostream>
#include <URDriver.h>
#include <QString>
#include <math.h>
using namespace std; class MainWindow: public QWidget {
private:
//角度转弧度
double DEGREEETORA = M_PI/180;
//ip输入框
QLineEdit *ipEdit;
//端口输入框
QLineEdit *portEdit; //连接状态
QLabel *statusLabel; //连接机械臂按钮
QPushButton *connectBtn;
QPushButton *disConnectBtn; //movej的每一个关节输入
QLineEdit *joint1Edit;
QLineEdit *joint2Edit;
QLineEdit *joint3Edit;
QLineEdit *joint4Edit;
QLineEdit *joint5Edit;
QLineEdit *joint6Edit; //movej
QPushButton *movejBtn; //movel输入
QLineEdit *xEdit;
QLineEdit *yEdit;
QLineEdit *zEdit;
QLineEdit *rxEdit;
QLineEdit *ryEdit;
QLineEdit *rzEdit; //movel
QPushButton *movelBtn; public:
explicit MainWindow(QWidget* parent = Q_NULLPTR); ~MainWindow() override;
//初始化ui界面
void initUI();
//绑定信号和槽
void bindSignalAndSlot();
//设置回调
void setCallBack();
void movej();
//movej移动
//movel移动
void movel();
}; #endif //URDRIVER_MAINWINDOW_H

qt(二)的更多相关文章

  1. Qt 二维码

    1.生成二维码 利用第三方库qrencode ,将qrencode源码添加到自己的程序中,直接调用使用. 参考http://blog.csdn.net/zhangxufei/article/detai ...

  2. qt二维码示例

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://blog.csdn.net/hiwubihe/article/details/38679621,qq:1269122125. 移动终 ...

  3. QT 二维图形 原理、发展及应用

    转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分 ...

  4. 用Qt写软件系列三:一个简单的系统工具之界面美化

    前言 在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出.进程子模块信息等功能,留到后面再来慢慢实现.这一篇来讲述如何对主界面进行个性化的定制.Qt库提供的只是最基本的组件功能,使用这些组件开 ...

  5. QT的初步学习笔记

    一.Qt简介 1.Qt是什么:图形用户界面程序框架  能做界面的还有什么:MFC.GTK+ 2.Qt的由来和发展 3.为什么选择Qt 二.Qt环境与工具 1.工具   a.Qt助手:里面详细说明了Qt ...

  6. Qt安装教程

    一.Qt下载 官网下载链接http://download.qt.io/archive/qt/,下载最新版 5.10 官网的下载网站有的时候可能会抽风,也可以选择国内的镜像下载源http://mirro ...

  7. QT显示框架嵌入Vs控制台工程

      一.一些准备工作: 1.安装Qt for VS 的插件: 安装Qt for VS 的插件 下载地址:http://download.qt.io/official_releases/vsaddin/ ...

  8. Qt之模型/视图(自定义风格)

    Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风 ...

  9. Qt5.7学习

    一 Qt简介(Build your world with Qt) 二 Qt5.7.0的安装 三 Qt系统构造库及常用类 四 信号(signal)与槽(slot)通信机制 五 QtDesigner开发工 ...

  10. APScheduler轻量级定时任务框架

    目录 一.APScheduler简介 支持的后端存储作业 集成的Python框架 二.APScheduler下载安装 三.APScheduler组件 各组件简介 调度器 作业存储器 执行器 触发器 四 ...

随机推荐

  1. HTML 基础2

    当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化.有以下三种方式来插入样式表: 外部样式表 内部样式 内联样式 外部样式表 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使 ...

  2. Java中的String,StringBuilder,StringBuffer三者的区别?

    package com.aaa.zxf.ajax.test; /** * 弄清楚 string stringBuilder StringBuffer 三者之间的关系? * * * 一. 三者都是用来对 ...

  3. 设置鼠标光标与页面favicon

    鼠标光标 body{cursor: url('http://image.XXXX.com/ii.png'),default;} 2. favicon <link rel="shortc ...

  4. Core Animation的使用步骤

  5. HTC组件介绍及应用 HTML

    转载请注明来源:https://www.cnblogs.com/hookjc/ HTML组件封装了HTML内容,并可以插入到别的HTML文档中.在HTML组件出现以前,在HMTL文档中使用自定义控制唯 ...

  6. 基于redis5的redis cluster部署

    一.环境规划 #准备六台主机,地址如下 10.0.0.8 ---> master1 10.0.0.18 ---> master2 10.0.0.28 ---> master3 10. ...

  7. spring boot 配置静态路径

    一  前言 最近有个项目,需要上传一个zip文件(zip文件就是一堆的html压缩组成)的压缩文件,然后后端解压出来,用户可以预览上传好的文件. 查看资料,spring boot对静态文件,可以通过配 ...

  8. jquery-easyui环境的搭建及测试

    对于软件开发者来说,一个良好的前端框架不仅能够使页面优美可观而且还能够大大的提高开发效率.提高系统整体界面的美观,框架将常用的功能封装完成,减少工作量.前端框架目前也比较多,小编本次主要介绍下easy ...

  9. SpringCloud微服务实战——搭建企业级开发框架(三十七):微服务日志系统设计与实现

      针对业务开发人员通常面对的业务需求,我们将日志分为操作(请求)日志和系统运行日志,操作(请求)日志可以让管理员或者运营人员方便简单的在系统界面中查询追踪用户具体做了哪些操作,便于分析统计用户行为: ...

  10. Windows微信清理工具v.3.0.1

    Windows微信清理工具v.3.0.1 今天,我原创的Windows微信清理工具迎来最大更新! v.3.0.0更新内容: 1.使用tkinter重构GUI,界面更简单易用! 2.增加"清理 ...