2012-03-27 6 views
2

Ich möchte ein Fenster in Qt erstellen, das eine QTableWidget bestehend aus 4 Spalten enthält, eine der Text und die letzten 3 sind QRadioButtons.
Ich konnte dies schaffen:Gruppe QRadioButtons in Zeilen von einem QTableWidget

MainWindow interface

Allerdings habe ich die QRadioButton s für Zeile zu einer Gruppe nicht in der Lage bin. In der Tat, mit dieser aktuellen Benutzeroberfläche kann ich nur EIN Radio aus den 30 angezeigten wählen, anstatt eines pro Zeile.
Hier ist mein Code:

// 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); 
} 

Wie kann ich das tun?

Antwort

4

Das Standardverhalten des QRadioButton ist exklusiv für alle anderen Schaltflächen desselben übergeordneten Elements. In diesem Fall werden sie alle an das tableWidget übergeben, sobald Sie sie in ihre Zellen gesetzt haben.

Was Sie tun sollten, ist am Ende jeder Schleife, erstellen Sie eine neue QButtonGroup, setzen Sie eine der Schaltflächen auf überprüft, und fügen Sie dann alle 3 zur Schaltflächengruppe hinzu. Jetzt ist jede dieser Zeilen nur in der QButtonGroup exklusiv, die Sie für jede Zeile erstellt haben.

+0

Brillant. Danke vielmals. –

Verwandte Themen