Seite 1 von 1

[gelöst] QLineEdit/QPushButton im QTreeWidget

Verfasst: 25. Juli 2007 00:27
von ChMaster
Servus zusammen,

habe da mal wieder ein kleines Problem. Ich benötige ein QLineEdit
und ein QPuschButton in einem QTreeWidgetItem.

Derzeit löse ich das so, aber dies funktioniert nicht.
Snipp aus meinem Hauptprogramm:

Code: Alles auswählen

pb = new PropertyBrowser();
pb->addPropertyBrowserGroup( tr( "Test" ) );

QList<ComponentItemValue*> civList;	
ComponentItemValue *civ;

QWidget *w = new QWidget();
QHBoxLayout *hbl = new QHBoxLayout();

QLineEdit *le = new QLineEdit();
QPushButton *btn = new QPushButton( "..." );

hbl->addWidget( le );
hbl->addWidget( btn );
w->setLayout( hbl );
w->setAutoFillBackground( true );

civ = new ComponentItemValue;
civ->itemName = QString( tr( "Test QWidget:" ) );
civ->widget = w;	
civList.append( civ );

pb->addPropertyBrowserComponent( civList );
propertybrowser.h/cpp

Code: Alles auswählen

..... propertybrowser.h .....

class ComponentItemValue {
	
	public:
		QString itemName;
		QWidget *widget;
};
.........

..... propertybrowser.cpp .....

void PropertyBrowser::addPropertyBrowserComponent( const QList<ComponentItemValue*> &componentItemValues ) {
	
	itemValues = componentItemValues;
	if( itemValues.size() <= 0 )
		return;

	for( int a = 0; a < itemValues.size(); a++ ) {
		item = new QTreeWidgetItem( treeWidgetPropertyBrowser );
		item->setSizeHint( 0, QSize( 110, 20 ) );		
		item->setSizeHint( 1, QSize( 110, 20 ) );

		item->setText( 0, itemValues.value( a )->itemName );
		treeWidgetPropertyBrowser->setItemWidget( item, 1, itemValues.value( a )->widget );
	}
}
.....
Was nicht funktioniert ist, dass er mir das Widget im QTreeWidget nicht
anzeigt. Entweder ist die Lösung greifbar nah oder ich blick durch den
Wald nicht mehr durch. :)

Verfasst: 25. Juli 2007 09:07
von upsala
Wäre ein QItemDelegate nicht sinnvoller?

Verfasst: 25. Juli 2007 22:38
von ChMaster
Servus upsala,

danke für deine schnelle und evtl. auch rettende Antwort. An diese
Lösung habe ich noch nicht gedacht, da mir dies ein wenig schwierig
erschien.

Nun werde ich mich mal damit befassen. Da ich damit noch nichts gemacht
habe. Werde dann mich nochmals melden, wenn ich damit Erfolg habe bzw.
keinen Erfolg. :)

Danke.

Verfasst: 26. Juli 2007 00:40
von ChMaster
Servus upsala,

ein QItemDelegate ist sehr sinnvoll und hat bei mir Wunder vollbracht.


Mal so als Erklärung: (korrigiere mich, wenn ich falsch liege)

Ein QItemDelegate ist nur dafür da, dass man das setzen kann was
man benötigt, in meinem Fall währe das ein QLineEdit mit einem
QPushButton?