TreeWidget setItemWidget

2011.04.29. 13:26 | arabiata | Szólj hozzá!

Címkék: segmentation fault treewidget setitemwidge

 Az előző két postban arra mutattam példákat, hogy miként lehet a TreeWidget (TW) valamelyik eleméhez widget-et rendelni setItemWidget utasítással. Itt is igaz, hogy ha egy pointer egyszer már bármilyen formában kapcsolatba került TW-vel, azt mégegyszer nem tudjuk felhasználni. Pl. ha egy Qt Designer-ben létrehozott lineEdit-et rendelünk a TW egy eleméhez, azt nem tudjuk újra ugyanerre a célra használni, mert a TW lesz a widget tulajdonosa. A program segmentation fault üzenettel elszáll a setItemWidget második hívásakor. A probléma megkerülésére találtam a következő módszert:

 

void RequestsForm::automata_kivalasztasa_slot(QString automata_neve) {

 

kod_be_lineEdit = NULL;

delete (kod_be_lineEdit);

kod_be_lineEdit = new QLineEdit("?");

 

connect(kod_be_lineEdit, SIGNAL(returnPressed()), this, SLOT(kod_be_returnPressed_slot()));

widget.treeWidget->setItemWidget(kivalasztott_automata, 2, kod_be_lineEdit); 

kod_be_lineEdit->setFocus();

}

 

 Mint látható, nem ugyanazt a beillesztendő pointert használom újra meg újra, hanem dinamikusan létrehozom őket minden setItemWidget hívás előtt. Ez lesz a setWidgetItem 3. paramétere. Miután kiolvastam az adatokat a pointer által hivatkozott widget-ből, letörölhetem a pointert.

 

A bejegyzés trackback címe:

https://qtqt.blog.hu/api/trackback/id/tr952864554

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása