0

在我的 QT UI 中,我需要创建一个QTableWidget用户可以在其中向每个单元格添加双精度。

该表有四列:第一列是从 0-255 的值,第二列到第四列分别是 RGB 值,每个从 0-1.0。

void MainWindow::InitializeColorTable(){
        QTableWidget *tableColor = ui->tableColor;
        tableColor->setRowCount(4);
        tableColor->setColumnCount(4);

    tableColor->setHorizontalHeaderLabels(QStringList() << 
        tr("Value") << tr("R") << tr("G") << tr("B"));
    for (int row = 0; row < tableColor->rowCount(); ++row){
        tableColor->setCellWidget(row, 0, new QDoubleSpinBox(tableColor));
        tableColor->setCellWidget(row, 1, new QDoubleSpinBox(tableColor));
        tableColor->setCellWidget(row, 2, new QDoubleSpinBox(tableColor));
        tableColor->setCellWidget(row, 3, new QDoubleSpinBox(tableColor));
    }
}

我想修改QDoubleSpinBox对象的属性,例如设置初始值和定义范围。但是,我不确定如何执行此操作。如果我创建QDoubleSpinBox

QDoubleSpinBox *box = new QDoubleSpinBox;
box->setValue(0);
box->setRange(0, 255);
tableColor->setCellWidget(row, 0, box);

在我的InitializeColorTable函数中,box当函数返回时变量超出范围。解决这个问题的好方法是什么?

4

1 回答 1

1

为什么你决定盒子 (QDoubleSpinBox *box = new QDoubleSpinBox;) 超出我们的范围?这是一个动态对象,它将在 setCellWidget 之后成为 tableColor 的子对象(只有该对象的指针超出范围)。所以不要担心。

于 2013-03-20T06:32:59.560 回答