在将QWidget放入QTableWidget之前修改它

时间:2013-03-20 06:28:17

标签: qt qwidget

在我的QT用户界面中,我需要创建一个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个对象的属性,例如设置初始值和定义范围。但是,我不知道该怎么做。如果我创建像{/ p>这样的QDoubleSpinBox个对象

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

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

1 个答案:

答案 0 :(得分:1)

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