#include "LinkUI.h" #include "ui_LinkUI.h" LinkUI::LinkUI(QWidget *parent) : QWidget(parent), ui(new Ui::LinkUI) { ui->setupUi(this); //load qss QFile file(":/qss/LinkUI.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); //读取接口列表 InterfaceList.append(tr("SerialPort")); InterfaceList.append(tr("Multicast")); InterfaceList.append(tr("Unicast")); //读取设备列表 DeviceList.append(tr("DataLink")); DeviceList.append(tr("RTK")); DeviceList.append(tr("Emergecy")); DeviceList.append(tr("Remote")); InterfaceMap.insert("SerialPort",tr("SerialPort")); InterfaceMap.insert("Multicast",tr("Multicast")); InterfaceMap.insert("Unicast",tr("Unicast")); DeviceMap.insert("DataLink",tr("DataLink")); DeviceMap.insert("RTK",tr("RTK")); DeviceMap.insert("Emergecy",tr("Emergecy")); DeviceMap.insert("Remote",tr("Remote")); } LinkUI::~LinkUI() { delete ui; } void LinkUI::settabtiltle(QVariant value) { ui->tabWidget->setTabText(ui->tabWidget->currentIndex(),value.toString()); } void LinkUI::closeTab() { ui->tabWidget->removeTab(ui->tabWidget->currentIndex()); } void LinkUI::recover(void) { //禁止除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); btn->setEnabled(true); } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } SerialPortCount = 0; UDPCount = 0; MulticastCount = 0; } void LinkUI::on_commandClicked() { //找到消息的发送者 QPushButton *btn = qobject_cast(sender()); if(btn) { DeviceString = DeviceMap.key(btn->text()); } //打开设置界面 ConnectDialog *connectdialog = new ConnectDialog(); //设置参数 //connectdialog->setDevice(DeviceString); //connectdialog->setInterface(InterfaceString); connect(connectdialog,SIGNAL(cancelSignal()), this,SLOT(closeTab())); connect(connectdialog,SIGNAL(usrNameChanged(QVariant)), this,SLOT(settabtiltle(QVariant))); connect(connectdialog,SIGNAL(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)), this,SIGNAL(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant))); connect(this,SIGNAL(PortConnect(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)), connectdialog,SLOT(PortConnected(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant))); connectdialog->setInit(InterfaceString,DeviceString); //当前界面恢复到初始状态 recover();//这个会删除btn指针 //新增一个界面在当前界面之前 //int index = ui->tabWidget->addTab(connectdialog,btn->text()); int index = ui->tabWidget->insertTab(ui->tabWidget->currentIndex(),connectdialog,DeviceString); //int index = ui->tabWidget->indexOf(connectdialog); ui->tabWidget->setCurrentIndex(index); } void LinkUI::on_pushButton_SerialPort_clicked() { if(SerialPortCount%2 == 0) { //禁止除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) { btn->setEnabled(false); } else { InterfaceString = btn->text(); } } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } //根据现存的设备生成一个列表 for(QString info: DeviceMap.values()) { QPushButton *btn = new QPushButton(ui->frame_DeviceType); btn->setText(info); btn->setFixedSize(200,80); ui->frame_DeviceType->layout()->addWidget(btn); connect(btn,SIGNAL(clicked(bool)), this,SLOT(on_commandClicked())); } } else { //使能除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) btn->setEnabled(true); } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } } SerialPortCount ++; } void LinkUI::on_pushButton_UDP_clicked() { if(UDPCount%2 == 0) { //禁止除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) { btn->setEnabled(false); } else { InterfaceString = btn->text(); } } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } //根据现存的设备生成一个列表 for(QString info: DeviceMap.values()) { QPushButton *btn = new QPushButton(ui->frame_DeviceType); btn->setText(info); btn->setFixedSize(200,80); ui->frame_DeviceType->layout()->addWidget(btn); connect(btn,SIGNAL(clicked(bool)), this,SLOT(on_commandClicked())); } } else { //使能除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) btn->setEnabled(true); } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } } UDPCount ++; } void LinkUI::on_pushButton_Multicast_clicked() { if(MulticastCount%2 == 0) { //禁止除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) { btn->setEnabled(false); } else { InterfaceString = btn->text(); } } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } //根据现存的设备生成一个列表 for(QString info: DeviceMap.values()) { QPushButton *btn = new QPushButton(ui->frame_DeviceType); btn->setText(info); btn->setFixedSize(200,80); ui->frame_DeviceType->layout()->addWidget(btn); connect(btn,SIGNAL(clicked(bool)), this,SLOT(on_commandClicked())); } } else { //使能除了自己之外在这个界面内所有按键 //将旧的按键全部删除 QObjectList Interface = ui->frame_InterfaceType->children(); foreach (QObject *obj, Interface) { QPushButton *btn = qobject_cast(obj); if(btn) { QPushButton *s = qobject_cast(sender()); if(btn != s) btn->setEnabled(true); } } QObjectList device = ui->frame_DeviceType->children(); foreach (QObject *obj, device) { QPushButton *btn = qobject_cast(obj); if(btn) { delete btn; } } } MulticastCount ++; }