在我的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
变量在函数返回时超出范围。什么是解决这个问题的好方法?
答案 0 :(得分:1)
为什么你认为盒子(QDoubleSpinBox * box = new QDoubleSpinBox;)是我们的范围?这是动态对象,在setCellWidget(此对象的指针超出范围)之后将成为tableColor的子对象。所以不要担心。