2012-03-27 40 views
2

我想在Qt中創建一個包含QTableWidget的窗口,其中包含4列,其中一個文本和最後3個是QRadioButtons
我能夠創造這樣的:從QTableWidget組中的QRadioButtons行

MainWindow interface

但是,我無法組QRadioButton S按排。事實上,使用這個當前的用戶界面,我只能從30個顯示中選擇一個收音機,而不是每行一個。
這裏是我的代碼:

// 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,設置其中一個按鈕進行選中,然後將所有3個按鈕添加到按鈕組中。現在,每行只會在您爲每行創建的QButtonGroup中獨佔。

+0

Brillant。非常感謝。 – 2012-03-27 23:10:25