主程序入口:

#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. 多选菜单shell脚本

    有 很多方法 可以读取Bash脚本中的用户输入. 但是,允许用户键入输入会带来一些问题. 主要问题是输入验证,您必须在其中考虑所有可能的输入. 解决此问题的一种简单方法是为Bash脚本创建一个多选菜单 ...

  2. 解决matplotlib中文不显示问题

    在导入库时添加如下几行代码 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcPa ...

  3. Linux 集群 和免秘钥登录的方法。

    /* 1.1.什么是集群? 很多台服务器(计算机)做相同的事,就称之为集群 服务器和服务器之间必须要处于联通状态(linux01和linux02可以相互访问并且传输数据) 服务器的配置和常见的计算机没 ...

  4. .NET6: 开发基于WPF的摩登三维工业软件

    MS Office和VisualStudio一直引领着桌面应用的时尚潮流,大型的工业软件一般都会紧跟潮流,搭配着Ribbon和DockPanel风格的界面.本文将介绍WPF下两个轻量级的Ribbon和 ...

  5. 从我做起[原生DI实现模块化和批量注入].Net Core 之一

    实现模块化注册 .Net Core实现模块化批量注入 我将新建一个项目从头开始项目名称Sukt.Core. 该项目分层如下: Sukt.Core.API 为前端提供APi接口(里面尽量不存在业务逻辑, ...

  6. JVM学习六:堆分析

    一.内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 public static void main(String args[]){ ArrayList<byte[]> li ...

  7. java-swing-事件监听-焦点监听器

    感谢大佬:https://blog.csdn.net/weixin_44512194/article/details/93377551 开始不知道焦点是啥,其实就是打字的时候,这个一闪一闪的竖线. 与 ...

  8. iOS 七大手势之轻拍,长按,旋转手势识别器方法-赵小波

    一.监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听vi ...

  9. android TextView属性详解

    RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false     android:layout_centerHrizontal  水平居中      android:l ...

  10. shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式

    shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式 1.sort命令 概述: Linux sort命令用于将文本文件内容加以排序. sort命令可针对文本文件的内容,以行为单 ...