[英]Qt: How to connect a QPushButton of a “DialogClass1” to kill a QProcess in a “Class2”?
我有代碼:
void Processmethod()
{
QDialog *ProcessMessage = new QDialog;
// HOW TO CONNECT THE DIALOGS PUSHBUTTON TO KILL THE PROCESS called in processmethodONE() ?
Ui::DialogProcessMessage Dialog; //polymorphy
Dialog.setupUi(ProcessMessage);
ProcessMessage->setModal(true);
ProcessMessage->setAttribute(Qt::WA_DeleteOnClose);
ProcessMessage->show();
processmethodONE();
}
void processmethodONE()
{
QString ProcessCommand = "w8 " + blablubli";
Prozess.setWorkingDirectory(Path); //QProcess "Prozess" is globaly defined
Prozess.setStandardOutputFile(Path); //in my class
QEventLoop loop;
connect(&Prozess, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
connect(&Prozess, SIGNAL(finished(int, QProcess::ExitStatus)), &loop, SLOT(quit()));
Prozess.start(ProcessCommand);
loop.exec();
QProcess::ExitStatus Status = Prozess.exitStatus();
if (Status == 0)
{
std::cout <<"Exit-Status: " << Status << " File created!" << std::endl;
}
else
{
std::cout << "Exit-Status: " << Status << " Error-Code: " << Prozess.error() << "Process failed!" << std::endl;
}
}
我想做的是通過其中一個對話框pushButtons來殺死QProcess“Prozess”。 無法編輯/指定類“Ui :: DialogProcessMessage”,因為它是由QtDesigner Ui-File直接構造的類,因此在使用QtDesigner編輯Ui文件時將被覆蓋。 我怎么處理這個? 問候
執行此操作后:
Dialog.setupUi(ProcessMessage);
... ProcessMessage
現在擁有在Ui::DialogProcessMessage
中設計的所有小部件。 您可以按名稱訪問所有項目。
connect(ProcessMessage->pushButton, SIGNAL(clicked()), &loop, SLOT(quit()));
關於如何引用孩子,我可能錯了, ->
或.
,因為我實際上使用PyQt。 但我相信你明白了。
通常你會從一開始就設計你的類來繼承Ui類,所以你要做的就是在你的構造函數中說setupUi(this)
。
目前看來你的processOne函數沒有引用對話框,所以你可能不得不把它作為arg傳遞。 或者將其更早地直接連接到流程:
connect(ProcessMessage->pushButton, SIGNAL(clicked()), &Prozess, SLOT(kill()));
解決方案就是使用
connect(Dialog.pushButtonAbort, SIGNAL(clicked()), &Prozess, SLOT(kill()));
可能是這樣,因為在這種情況下Dialog是“主要對象”,而對象“ProcessMessage”僅用於指定它。 從QDeveloper論壇得到了這個。
THX為支持人員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.