机器人示教器开发关键代码总结 1

1、单例模式

头文件

static axController *Instance() {

if ( !_instance ) {
_instance = new axController;
}
return _instance;
}

    static axController *_instance;

 

源文件

axController *axController::_instance = 0;
axController::axController(QObject *parent) : QObject(parent)
{

if ( !_instance ) {
_instance = this;
}

bM = buttonMonitor::Instance();
nW = netWork::Instance();
mT = modbusTCP::Instance();
//dt = deviceType::Instance();
ct = coordinateSystem::Instance();

current_speed = speed_low;
connect(bM, &buttonMonitor::sendKeySignal, this, &axController::keyPressHandler);

}

2、信号槽

       connect(kt, &keyThread::keySignal, this, &buttonMonitor::keyPressSlotHandler);

3、宏

#define TBKEY_U  TBKEY_KEY1

 

4、QTreeView

#ifndef PARAMTREEVIEW_H
#define PARAMTREEVIEW_H

#include <QtGui>
#include <QTreeView>
#include <QWidget>


class CParamTreeView :public QTreeView
{
Q_OBJECT

public:
explicit CParamTreeView(QWidget *parent = 0);
void iterateOverItems();

QList<QStandardItem*> returnTheItems();
void mouseDoubleClickEvent(QMouseEvent *event);

public:
QStandardItemModel *model;

public:
void SetModelSize(int row,int colum=2);

//private:


};


QStandardItem* CreateOneQStandardItem(char type, QPixmap p, QVariant txt);
QStandardItem* CreateOneQStandardItem(char type, QString IconPath, QVariant txt);
QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QString IconPath, QString keyValue, QVariant valueTxt, int serialNumber);
QStandardItem* CreateOneQStandardItemByIndex(QModelIndex indexSource,QStandardItemModel* modelSource, QPixmap p, QString txt);
QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QPixmap p, QString keyValue, QVariant valueTxt);
QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QString IconPath, QString keyValue, QVariant valueTxt);
QByteArray CharArrayToQByteArray(char* source);

QString GetColumnOneValue(const QModelIndex &index);
QString GetColumnZeroValue(const QModelIndex &index);
QString GetColumnTwoValue(const QModelIndex &index);
QModelIndex GetColumnOneIndex(const QModelIndex &index);
QModelIndex GetColumnZeroIndex(const QModelIndex &index);
QString GetColumnCurrentValue(const QModelIndex &index);
void SetColumnCurrentValue(QStandardItem* index, QString value);
int GetColumnCurrentDepth(const QModelIndex &index);
void SetColumnCurrentValueToGlobalVar_Cfg(int clickPosition, QString value);
void SetColumnCurrentValueToGlobalVar_Plc(int clickPosition, QString value);
void SetColumnCurrentValueToGlobalVar_Sfc(int clickPosition, QString value);

 

#endif

#include "ParamTreeView.h"
#include <QStyleFactory>


#include <QDebug>
#include <qtextcodec.h>

#include "global/global.h"

CParamTreeView::CParamTreeView(QWidget *parent) :
QTreeView(parent)
{
setStyle(QStyleFactory::create("windows"));

//setEditTriggers(QAbstractItemView::NoEditTriggers);
setEditTriggers(QTreeView::NoEditTriggers); // 单元格不能编辑
setSelectionBehavior(QTreeView::SelectRows); // 一次选中整行

//setSelectionMode(QTreeView::SingleSelection); // 单选,配合上面的整行就是一次选单行
//setAlternatingRowColors(true); // 每间隔一行颜色不一样,当有qss时该属性无效

setFocusPolicy(Qt::NoFocus); // 去掉鼠标移到单元格上时的虚线框
SetModelSize(1, 1); //初始化
}

QList<QStandardItem*> CParamTreeView::returnTheItems()
{
return model->findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
}


void CParamTreeView::iterateOverItems()
{
QList<QStandardItem*> list = returnTheItems();

foreach(QStandardItem* item, list)
{
qDebug() << item->text();
}
}

void CParamTreeView::mouseDoubleClickEvent(QMouseEvent *event)
{
// if (event->button() == Qt::LeftButton)
// {
// QModelIndex index0 = currentIndex();
// QModelIndex parentT = index0.parent();
// QModelIndex index;

// if (parentT.isValid())
// {
// index = model->index(index0.row(), 0, parentT);
// }
// else
// {
// index = model->index(index0.row(), 0);
// }

// setExpanded(index, !isExpanded(index));
// }

if (event->button() == Qt::LeftButton)
{
//QModelIndex indexttt = indexAt(event->pos());
QModelIndex index0 = currentIndex();
QModelIndex parentT = index0.parent();
QModelIndex index;
if (model->rowCount() <= 0)
{
return;
}
if (parentT.isValid())
{
index = model->index(index0.row(), 0, parentT);
}
else
{
index = model->index(index0.row(), 0);
}
//setExpanded(index, !isExpanded(index)); //部分有效
if (isExpanded(index))
{
collapse(index);
}
else
{
expand(index);
}
}
QWidget::mouseDoubleClickEvent(event);

}

void CParamTreeView::SetModelSize(int row, int colum)
{
QTextCodec *codec = QTextCodec::codecForName("GBK");

model = new QStandardItemModel(row, colum);
model->setHeaderData(0, Qt::Horizontal, codec->toUnicode("参数名称"));
model->setHeaderData(1, Qt::Horizontal, codec->toUnicode("参数值"));
setModel(model);
}

 

QStandardItem* CreateOneQStandardItem(char type, QPixmap p, QVariant txt)
{
QString temp_txt = txt.toString();

QStandardItem *item1 = new QStandardItem(temp_txt);
item1->setIcon(QIcon(p));

QColor clr;
clr = type == 0 ? QColor(28, 28, 28) : QColor(119, 136, 153);

item1->setForeground(QBrush(clr));

return item1;
}

QStandardItem* CreateOneQStandardItem(char type, QString IconPath, QVariant txt)
{

IconPath=":/image/Varcon.png";
QString temp_txt = txt.toString();
QStandardItem *item1 = new QStandardItem(temp_txt);
item1->setIcon(QIcon(IconPath));
QColor clr;
clr = type == 0 ? QColor(28, 28, 28) : QColor(119, 136, 153);

item1->setForeground(QBrush(clr));

return item1;
}
QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QPixmap p, QString keyValue, QVariant valueTxt)
{
QString temp_txt = valueTxt.toString();
temp_txt = temp_txt.compare("") == 0 ? "UnUsed" : temp_txt;

QStandardItem* result;

QStandardItem *item1_Sub1 = new QStandardItem(keyValue);
item1_Sub1->setIcon(QIcon(p));

QStandardItem *item1_SubT = new QStandardItem(temp_txt);
item1_SubT->setIcon(QIcon(p));

QList<QStandardItem *> list;
list.push_back(item1_Sub1);
list.push_back(item1_SubT);

pSource->appendRow(list);
result = item1_Sub1;

return result;
}

QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QString IconPath, QString keyValue, QVariant valueTxt,int serialNumber)
{
IconPath=":/image/Varcon.png";
QString temp_txt = valueTxt.toString();
temp_txt = temp_txt.compare("") == 0 ? "UnUsed" : temp_txt;
QStandardItem* result;
QStandardItem *item1_Sub1 = new QStandardItem(keyValue);
item1_Sub1->setIcon(QIcon(IconPath));
QStandardItem *item1_SubT = new QStandardItem(temp_txt);
item1_SubT->setIcon(QIcon(IconPath));

QString itemSubTT = QString("%1").arg(serialNumber);
QStandardItem *item1_SubTT = new QStandardItem(itemSubTT);
item1_SubTT->setIcon(QIcon(IconPath));
QList<QStandardItem *> list;
list.push_back(item1_Sub1);
list.push_back(item1_SubT);
list.push_back(item1_SubTT);
pSource->appendRow(list);
result = item1_Sub1;
return result;
}

QStandardItem* CreateOneSubQStandardItem(QStandardItem* pSource, QString IconPath, QString keyValue, QVariant valueTxt)
{
IconPath=":/image/Varcon.png";
QString temp_txt = valueTxt.toString();
temp_txt = temp_txt.compare("") == 0 ? "UnUsed" : temp_txt;
QStandardItem* result;
QStandardItem *item1_Sub1 = new QStandardItem(keyValue);
item1_Sub1->setIcon(QIcon(IconPath));
QStandardItem *item1_SubT = new QStandardItem(temp_txt);
item1_SubT->setIcon(QIcon(IconPath));

QList<QStandardItem *> list;
list.push_back(item1_Sub1);
list.push_back(item1_SubT);
pSource->appendRow(list);
result = item1_Sub1;
return result;
}

QStandardItem* CreateOneQStandardItemByIndex(QModelIndex indexSource, QStandardItemModel* modelSource, QPixmap p, QString txt)
{
txt = txt.compare("") == 0 ? "Default" : txt;
modelSource->setData(indexSource, txt);

QStandardItem *item1 = modelSource->itemFromIndex(indexSource);
item1->setIcon(QIcon(p));
return item1;
}

QByteArray CharArrayToQByteArray(char* source)
{
//byte.append((char*)&g_DownloadSysFile.label, sizeof(g_DownloadSysFile.label));

QByteArray byte;
byte.append(source, strlen(source));

return byte;
}

QString GetColumnOneValue(const QModelIndex &index)
{
QString result = "";
int row = index.row();
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);

int isValid = currentItem->columnCount(); //判断点击是否有效
if (currentItem->parent() != NULL)
{
QStandardItem *oneValue = currentItem->parent()->child(row, 1);
result = oneValue->data(0).toString();//获取该条目的值
}
else
{
QModelIndex targetIndex = model->index(row, 1);
QStandardItem *targetItem = model->itemFromIndex(targetIndex);
result = targetItem->data(0).toString();//获取该条目的值
}
return result;
}
QString GetColumnTwoValue(const QModelIndex &index)
{
QString result = "";
int row = index.row();
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);

int isValid = currentItem->columnCount(); //判断点击是否有效
if (currentItem->parent() != NULL)
{
QStandardItem *oneValue = currentItem->parent()->child(row, 2);
result = oneValue->data(0).toString();//获取该条目的值
}
else
{
QModelIndex targetIndex = model->index(row, 2);
QStandardItem *targetItem = model->itemFromIndex(targetIndex);
result = targetItem->data(0).toString();//获取该条目的值
}
return result;
}
QString GetColumnZeroValue(const QModelIndex &index)
{
QString result = "";
int row = index.row();
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);

int isValid = currentItem->columnCount(); //判断点击是否有效
if (currentItem->parent() != NULL)
{
QStandardItem *oneValue = currentItem->parent()->child(row, 0);
result = oneValue->data(0).toString();//获取该条目的值
}
else
{
QModelIndex targetIndex = model->index(row, 0);
QStandardItem *targetItem = model->itemFromIndex(targetIndex);
result = targetItem->data(0).toString();//获取该条目的值
}
return result;
}
QModelIndex GetColumnOneIndex(const QModelIndex &index)
{
QModelIndex result;
int row = index.row();
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);
if (currentItem->parent() != NULL)
{
QStandardItem *oneValue = currentItem->parent()->child(row, 1);
result = oneValue->index();
}
else
{
QModelIndex targetIndex = model->index(row, 1);
QStandardItem *targetItem = model->itemFromIndex(targetIndex);
result = targetItem->index();
}
return result;
}

QModelIndex GetColumnZeroIndex(const QModelIndex &index)
{
QModelIndex result;
int row = index.row();
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);
if (currentItem->parent() != NULL)
{
QStandardItem *oneValue = currentItem->parent()->child(row, 0);
result = oneValue->index();
}
else
{
QModelIndex targetIndex = model->index(row, 0);
QStandardItem *targetItem = model->itemFromIndex(targetIndex);
result = targetItem->index();
}
return result;
}
QString GetColumnCurrentValue(const QModelIndex &index)
{
QString result = "";
QStandardItemModel* model = (QStandardItemModel*)index.model();
QStandardItem *currentItem = model->itemFromIndex(index);
result = currentItem->data(0).toString();//获取该条目的值
return result;
}

void SetColumnCurrentValue(QStandardItem* index, QString value)
{
index->setText(value);
}

void SetColumnCurrentValueToGlobalVar_Cfg(int clickPosition, QString value)
{
int type = clickPosition;
int test;
switch (type)
{
case 0:
QS2Chararray(value, g_DownloadSysFile.label, sizeof(g_DownloadSysFile.label));
break;
case 1:
g_DownloadSysFile.versionNumber = value.toInt();
break;
case 2:
// g_DownloadSysFile.time
break;
case 3: //?λ

break;
case 4:
QS2Chararray(value, g_DownloadSysFile.sysPrjCfg.passWord, sizeof(g_DownloadSysFile.sysPrjCfg.passWord));
break;
case 5:
QS2Chararray(value, g_DownloadSysFile.sysPrjCfg.SysName, sizeof(g_DownloadSysFile.sysPrjCfg.SysName));
break;
case 6:
QS2Chararray(value, g_DownloadSysFile.sysPrjCfg.SysCpyRight, sizeof(g_DownloadSysFile.sysPrjCfg.SysCpyRight));
break;
case 7:
QS2Chararray(value, g_DownloadSysFile.sysPrjCfg.SysOrigin, sizeof(g_DownloadSysFile.sysPrjCfg.SysOrigin));
break;
case 8:
QS2Chararray(value, g_DownloadSysFile.sysPrjCfg.SysGnCalen, sizeof(g_DownloadSysFile.sysPrjCfg.SysGnCalen));
break;
case 9:
g_DownloadSysFile.sysStruType = value.toInt();
break;
case 10:

break;
case 11:
g_DownloadSysFile.sysPeriDev.NCexDevType.bit.GOT_HMI = value.toInt();
break;
case 12:
g_DownloadSysFile.sysPeriDev.NCexDevType.bit.SmartCam = value.toInt();
break;
case 13:
g_DownloadSysFile.sysPeriDev.NCexDevType.bit.Server = value.toInt();
break;
case 14:
g_DownloadSysFile.sysPeriDev.NCexDevType.bit.PLC_IO = value.toInt();
break;
case 15:
g_DownloadSysFile.sysPeriDev.NCexDevType.bit.Rsvd = value.toInt();
break;
case 16:
break;
case 17:

break;
case 18:

break;
case 19:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M01 = value.toInt();
break;
case 20:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].devNo = value.toInt();
break;
case 21:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].AxisNo = value.toInt();
break;
case 22:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].Alias));
break;
case 23:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[0].Comment));
break;
case 24:
break;
case 25:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M02 = value.toInt();
break;
case 26:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].devNo = value.toInt();
break;
case 27:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].AxisNo = value.toInt();
break;
case 28:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].Alias));
break;
case 29:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[1].Comment));
break;
case 30:
break;
case 31:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M03 = value.toInt();
break;
case 32:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].devNo = value.toInt();
break;
case 33:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].AxisNo = value.toInt();
break;
case 34:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].Alias));
break;
case 35:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[2].Comment));
break;
case 36:
break;
case 37:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M04 = value.toInt();
break;
case 38:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].devNo = value.toInt();
break;
case 39:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].AxisNo = value.toInt();
break;
case 40:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].Alias));
break;
case 41:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[3].Comment));
break;

case 42:
break;
case 43:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M05 = value.toInt();
break;
case 44:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].devNo = value.toInt();
break;
case 45:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].AxisNo = value.toInt();
break;
case 46:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].Alias));
break;
case 47:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[4].Comment));
break;
case 48:
break;
case 49:
g_DownloadSysFile.sysPeriDev.MotorData.MotorType.bit.M06 = value.toInt();
break;
case 50:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].devNo = value.toInt();
break;
case 51:
g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].AxisNo = value.toInt();
break;
case 52:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].Alias, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].Alias));
break;
case 53:
QS2Chararray(value, g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].Comment, sizeof(g_DownloadSysFile.sysPeriDev.MotorData.MotorInfoData[5].Comment));
break;
default:
break;
}
}


void SetColumnCurrentValueToGlobalVar_Plc(int clickPosition, QString value)
{
// PlcSerialized temp;
// temp.UpdateTargtPlcParam(clickPosition, value);
}
void SetColumnCurrentValueToGlobalVar_Sfc(int clickPosition, QString value)
{
// SfcSerialized temp;
// temp.UpdateTargtPlcParam(clickPosition, value);
}
int GetColumnCurrentDepth(const QModelIndex &index)
{
int result=0;
QModelIndex parentIndex;
if (!index.isValid())
{
return 0;
}
QStandardItemModel* model = (QStandardItemModel*)index.model();
parentIndex = index.parent();

while (parentIndex.isValid())
{
result++;
parentIndex = parentIndex.parent();

}


return result;
}

 

posted @ 2020-05-14 10:49  石首桃花山  阅读(655)  评论(0编辑  收藏  举报