QTableWidget eine Spalte nicht editierbar machen...
Verfasst: 10. Juli 2009 14:25
Hallo,
ich bin QT Neuling, und habe mal eine Frage zu QTableWidget. Mit der
Suchfunktion hab ich nix gefunden zu folgenden Problem:
Ich habe ein QTableWidget mit 3 Spalten, zwei davon sollen editierbar
sein, also Dateneingabe möglich und eine Spalte soll ''ReadOnly'' sein.
Mit dem GUI-Tool habe ich bei meiner Tabelle rowselect sowie single item
select eingestellt.
Man kann zwar mit:
das Ganze erreichen aber nun kann mann die Zeile nicht selektieren wenn
mann auf die Spalte ''ID'' klicket.
Ist es also möglich die Tabelle dazu zu bewegen das wenn man auf die
Spalte ID klickt die ganze Zeile selektiert ist und trotzdem diese Spalte
nicht editierbar ist.
Eine Idee von mir ist das Signal cellDoubleClicked zu nutzen und in dem
selbstgebauten slot eine Abfrage zu machen ''ist nicht Spalte ID dann
signal entfernen'', nur wie macht man das.
ich bin QT Neuling, und habe mal eine Frage zu QTableWidget. Mit der
Suchfunktion hab ich nix gefunden zu folgenden Problem:
Ich habe ein QTableWidget mit 3 Spalten, zwei davon sollen editierbar
sein, also Dateneingabe möglich und eine Spalte soll ''ReadOnly'' sein.
Mit dem GUI-Tool habe ich bei meiner Tabelle rowselect sowie single item
select eingestellt.
Man kann zwar mit:
Code: Alles auswählen
QTableWidgetItem * newitem =new QTableWidgetItem(query.value( record.indexOf("id")).toString());
newitem->setFlags(Qt::ItemIsSelectable);
ui->tableWidget->setItem(i,0,newitem);
mann auf die Spalte ''ID'' klicket.
Ist es also möglich die Tabelle dazu zu bewegen das wenn man auf die
Spalte ID klickt die ganze Zeile selektiert ist und trotzdem diese Spalte
nicht editierbar ist.
Eine Idee von mir ist das Signal cellDoubleClicked zu nutzen und in dem
selbstgebauten slot eine Abfrage zu machen ''ist nicht Spalte ID dann
signal entfernen'', nur wie macht man das.
Code: Alles auswählen
connect(ui->tableWidget, SIGNAL(cellDoubleClicked(int,int)),this,SLOT(doppelklick(int,int)));//im Konstruktor
bool MainWindow::doppelklick(int y, int x)
{
if(x==0)//1.spalte?(id soll nicht veränderbar)
{
ui->tableWidget->closeEvent(NULL);//geht leider nicht is protected
}
return true;
}