我有下面這樣的函式,以及全域 QVector<pid_t> pid; 在頭檔案中哪些元素是 Linux 行程 ID。但是當我試圖按下“優先級”按鈕時 - 程式意外完成。由于 qDebugs,我意識到函式在 if 陳述句之后中斷。我無法理解這個問題。功能:
void MainWindow::on_priority_clicked()
{
int curI = ui->tableWidget->currentRow();
int prio = ui->prioritySpinBox->value();
try{
if(ui->tableWidget->item(curI,1)->text().isNull())
throw curI;
else {
setpriority(PRIO_PROCESS, pid.at(curI),prio);
QLabel *labelPrio = new QLabel(ui->tableWidget);
labelPrio->setText(QString::number(getpriority(PRIO_PROCESS, pid.at(curI))));
ui->tableWidget->setCellWidget(curI, 3, labelPrio);
}
}
catch(int x)
{
QMessageBox::warning(this, "Error", "Process " QString::number(x 1) " is not created");
}
}
uj5u.com熱心網友回復:
不確定這是否是您的問題,但如果ui->tableWidget->item(curI,1)不存在(或為空),則呼叫->text()它會導致崩潰。您可能需要先檢查它是否存在:
void MainWindow::on_priority_clicked()
{
int curI = ui->tableWidget->currentRow();
int prio = ui->prioritySpinBox->value();
try{
if(ui->tableWidget->item(curI,1) != nullptr)
....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325452.html
下一篇:為什么編譯器將類視為抽象類?
