簡體   English   中英

Qt QProcess::kill() 不殺死進程

[英]Qt QProcess::kill() not kill the process

我在 Qt 中開發了一個 GUI 應用程序。

這運行了一個帶有 QProcess 的 Python 程序。 myapp.h文件中是 pr def:

QProcess *pr = new QProcess(this);

在構造函數中是這樣的:

QString file = "program/path.py";
pr->start("[...]/Programs/Python/Python38-32/python.exe", QStringList() << file);

析構函數有以下代碼:

pr->kill();
delete ui;

如果我運行這個程序,我就沒有錯誤。 我關閉了窗口,但這個過程仍在運行,但我不知道為什么。

我在 Windows 中工作。

我測試了這個例子並且 kill() 有效。

也許您的進程已經在您的系統中啟動並且啟動功能沒有正常工作。

試試這個:我有 2 個按鈕用於啟動和終止進程:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QProcess>

QT_BEGIN_NAMESPACE
namespace Ui
{
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow: public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);

    ~MainWindow();

private slots:
    void  on_pb_start_clicked();

    void  on_pb_kill_clicked();

private:
    Ui::MainWindow *ui;
    QProcess       *pr;
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent):
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void  MainWindow::on_pb_start_clicked()
{
    pr = new QProcess(this);

    pr->start("vlc");
}

void  MainWindow::on_pb_kill_clicked()
{
    pr->kill();
}

輸出:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM