0

2 行 2 列のテーブルを作成します。

ここに画像の説明を入力

2 番目の列には、spinBoxes が要素として含まれています。コードは次のとおりです。

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    myTable = ui->tableWidget;

for( int i = 0; i < myTable->rowCount(); i++ )
    {
      QDoubleSpinBox *spinBox = new QDoubleSpinBox(this);
      spinBox->setValue( i + 1 );
      myTable->setCellWidget( i, 1, spinBox );
    }
}

myTableのメンバーとして宣言されていMainWindowます。

通常、 just の値は次のSpinBoxes方法でアクセスできます。

ui->spinBox->value();

しかし、これはここでは機能していません。

SpinBoxesのアイテムとして使用する値にアクセスするにはどうすればよいQTableWidgetですか? 反復によってにアクセスしたいSpinBoxesので、すべてのスピン ボックスをループするために for ループを使用します。

4

2 に答える 2

4

テーブル ウィジェットは で動作しitemsます。各セルは 1 つのアイテムを表します (この場合、2 行 x 2 列 = 4 セル = 4 アイテム)。すでに行ったように、 を呼び出してアイテムの 1 つに特定のウィジェットを設定できますsetCellWidget(int row, int column, QWidget* widget)。これで、対応する呼び出しcellWidget(int row, int column)で、以前に設定した QWidget へのポインターが返されます。

残ってcastいるのは、その派生クラスにQWidget戻ることだけです。

double val = static_cast<QDoubleSpinBox*>(myTable->cellWidget(0,1))->value();

説明を求めたので、コメント付きの1行のコードを次に示します。

QWidget* some_cell_widget = myTable->cellWidget(0,1);                            // retrieve widget from cell
QDoubleSpinBox* dbl_spin_box = static_cast<QDoubleSpinBox*>(some_cell_widget);   // cast widget to double spin box
double val = dbl_spin_box->value();                                              // get value from spinbox
于 2014-09-11T07:59:23.777 に答える
2

それを行う別の方法は次のとおりです。

//To set the value:
int valueIWant = 5;
ui->tableWidget->cellWidget(0,2)->setProperty("value",valueIWant);"
//And to read the value:
int actualValue = ui->tableWidget->cellWidget(0,2)->property("value").value<int>();

これが役立つことを願っています。

于 2015-09-11T23:27:46.547 に答える