0

私の QT UI ではQTableWidget、ユーザーが各セルに double を追加できる を作成する必要があります。

テーブルには 4 つの列があります。最初の列は 0 ~ 255 の値、2 番目の列から 4 番目の列はそれぞれ 0 ~ 1.0 の RGB 値です。

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 に答える