无法从 QT 中的 tableWidget 获取项目



我有如下的函数,全局QVectorpid;在头文件中,哪些元素是Linux进程id。但是当我尝试按下"优先级"按钮时;-程序意外结束。由于qDebugs,我已经意识到函数中断后,如果语句。我不明白这个问题的原因。功能:

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");
}
}

不确定这是否是您的问题,但如果ui->tableWidget->item(curI,1)不存在(或为null),则在其上调用->text()将导致崩溃。您可能需要先检查它是否存在:

void MainWindow::on_priority_clicked()
{
int curI = ui->tableWidget->currentRow();
int prio = ui->prioritySpinBox->value();
try{
if(ui->tableWidget->item(curI,1) != nullptr)
....

相关内容

  • 没有找到相关文章