主程序入口:

#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. linux文件创建删除与基础命令使用

    目录 一:linux介绍 二:系统介绍 三:系统命令语法格式 四:系统目录结构 五:系统路径的类型 六:系统运行命令 七:查看系统命令帮助man手册 八:系统快捷方式 九:常用系统命令 十:进行目录创 ...

  2. Ali云组件概念

  3. iGear 用了这个小魔法,模型训练速度提升 300%

    一个高精度AI模型离不开大量的优质数据集,这些数据集往往由标注结果文件和海量的图片组成.在数据量比较大的情况下,模型训练周期也会相应加长.那么有什么加快训练速度的好方法呢? 壕气的老板第一时间想到的通 ...

  4. Spring源码-IOC部分-自定义IOC容器及Bean解析注册【4】

    实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...

  5. HUWEI交换机如何判断环路故障

    定义 以太网交换网络中为了提高网络可靠性,通常会采用冗余设备和冗余链路,然而现网中由于组网调整.配置修改.升级割接等原因,经常会造成数据或协议报文环形转发,不可避免的形成环路.如图1所示,三台设备两两 ...

  6. sort、uniq、tr、cut、eval以及正则表达式

    sort.uniq.tr.cut.eval以及正则表达式 目录 sort.uniq.tr.cut.eval以及正则表达式 一.sort命令 1. sort的作用 2. 语法格式 3. 常用选项 4. ...

  7. C++输入多行数据

    动机 编程题常用需求,比如输入两行数据. 解决思路:使用getline 程序 #include <iostream> #include <vector> #include &l ...

  8. LeetCode随缘刷题之赎金信

    欢迎评论区讨论. package leetcode.day_12_04; /** * 为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思. * * 给你一个赎金信 (ransom ...

  9. 根据经纬度坐标获得省市区县行政区划城市名称,自建数据库 java python php c# .net 均适用

    目录 步骤一.下载省市区边界数据 步骤二.解析CSV文件导入数据库 步骤三.在程序中根据坐标解析获得城市 在LBS应用中,根据坐标来解析获得对应是哪个城市是一个很常见的功能,比如App里面通过手机定位 ...

  10. 用python的turtle作图(二)动画吃豆人

    本文是用python的turtle作图的第二篇,通过这个例子可以了解动画的原理,用python自带的turtle库制作一些小动画. 1.问题描述 在上一篇"用python的turtle作图( ...