2012-03-27 8 views
2

QTableWidgetが4列、テキストの1つと最後の3がQRadioButtonsであるQtでウィンドウを作成したいとします。
は、私はこれを作成することができました:QTableWidgetの行のグループQRadioButton

MainWindow interface

は、しかし、私は行によってQRadioButtonのグループすることができません。実際、この現在のUIでは、1行につき1つではなく、表示されている30のラジオを1つだけ選択できます。ここ
は私のコードです:

// 1st col stretchable, other 3 fixed width 
QHeaderView *header = ui->tableWidget->horizontalHeader(); 
header->setResizeMode(QHeaderView::Stretch); 
header->setResizeMode(1, QHeaderView::Interactive); 
header->setResizeMode(2, QHeaderView::Interactive); 
header->setResizeMode(3, QHeaderView::Interactive); 

// Can't select lines 
ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); 

// Test: fill the list 
ui->tableWidget->setRowCount(10); 
QLabel *nom; 
QRadioButton *radio1, *radio2, *radio3; 
for (int i = 0; i < 10; i++) { 
    nom = new QLabel(); 
    nom->setText(QString("test")+QString::number(i)); 
    ui->tableWidget->setCellWidget(i, 0, nom); 

    radio1 = new QRadioButton(); 
    radio2 = new QRadioButton(); 
    radio3 = new QRadioButton(); 
    ui->tableWidget->setCellWidget(i, 1, radio1); 
    ui->tableWidget->setCellWidget(i, 2, radio2); 
    ui->tableWidget->setCellWidget(i, 3, radio3); 
} 

はどうすればこれを行うことができますか?

答えて

4

QRadioButtonのデフォルトの動作は、同じ親の下にある他のすべてのボタンと排他的です。この場合、それらはすべて、セルに設定した後にtableWidgetを親としています。

すべてのループが終了すると、新しいQButtonGroupを作成し、ボタンの1つをオンに設定して、3つすべてをボタングループに追加します。これらの各行は、各行に対して作成したQButtonGroup内でのみ排他的になります。

+0

ブリリアント。どうもありがとう。 –