簡體   English   中英

無法從 QT 中的 tableWidget 獲取項目

[英]Can't get an item from tableWidget in QT

我有下面這樣的函數,以及全局 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");
        }
    }

不確定這是否是您的問題,但如果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)
                ....

暫無
暫無

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

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