使用QT界面显示打开其他软件

搜索其他软件并嵌套到QT界面

QDir dir = qApp->applicationDirPath();
    if (!dir.exists()) {
        return;
    }
    QStringList filters;
    filters << QString("*.exe");
    dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
    dir.setNameFilters(filters);                   //设置文件名称过滤器,只为filters格式
    int dirCount = dir.count();
    if (dirCount <= 0) {
        return;
    }
    QStringList stringList;
    for (int i = 0; i < dirCount; i++) 
    {
        QString filename = dir[i];
        if (filename.left(filename.size()-4) == qApp->applicationDisplayName())
        {
            continue;
        }
        QProcess *p=new QProcess;
        p->start(filename, QStringList(filename));
        connect(this, &QMainWindow::destroyed, p, [=] {
            p->close();
        });
        QThread::msleep(500);
        WId wid = (WId)FindWindow(NULL, filename.left(filename.size() - 4).toStdWString().c_str());//软件标题

        QWindow* m_window = QWindow::fromWinId(wid);
        m_window->setFlags(m_window->flags() | Qt::CustomizeWindowHint | Qt::WindowTitleHint); 
        QWidget *m_widget; 
        m_widget = QWidget::createWindowContainer(m_window, ui.widget);
        /*HWND mm = (HWND)wid;
        SetWindowTextA(mm, (LPCSTR)filename.left(filename.size() - 4).toStdWString().c_str());*/
        qDebug() << wid<< filename.left(filename.size() - 4);
        l->addWidget(m_widget);

    }
    ui.widget->setLayout(l);
同样抱歉,我无法生成完整的QT代码,但是我可以给出一些大致的实现步骤: 1. 创建一个QT主窗口,添加需要的控件,如QLabel、QPushButton等。 2. 使用Qt的串口通信模块,打开串口并设置相关参数,如波特率、数据位、停止位等。 3. 编写相应的串口通信协议,向VSG60A发送指令并读取返回的数据。 4. 将返回的数据解析并显示QT界面上。 以下是一些基本的代码示例: ```c++ // 打开串口 QSerialPort serialPort; serialPort.setPortName("COM3"); // 设置串口号 serialPort.setBaudRate(QSerialPort::Baud9600); // 设置波特率 serialPort.setDataBits(QSerialPort::Data8); // 设置数据位 serialPort.setParity(QSerialPort::NoParity); // 设置校验位 serialPort.setStopBits(QSerialPort::OneStop); // 设置停止位 serialPort.setFlowControl(QSerialPort::NoFlowControl); // 设置流控制 if (serialPort.open(QIODevice::ReadWrite)) { // 串口打开成功 } // 发送指令 QByteArray command = "Command"; // 指令内容 serialPort.write(command); // 发送指令 // 读取返回的数据 QByteArray responseData; if (serialPort.waitForReadyRead(1000)) { // 等待1000ms responseData = serialPort.readAll(); // 读取返回的数据 } // 解析数据并显示QT界面上 QString result(responseData); // 将返回的字节数组转换为字符串 ui->label->setText(result); // 将字符串显示在QLabel上 ``` 这只是一个简单的示例,实际上,需要根据具体的通信协议和界面需求进行更细致的设计和实现。希望这可以帮助你开始实现VSG60A的软件界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值