2017-07-07 4 views
1

Ich versuche, eine GUI mit einem Eigenschaftenraster (Raster von Namen: Wert-Paaren) zu erstellenWert ändert in nana listbox

Der Listbox-Widget scheint der Weg zu sein, zu starten. (Bitte korrigieren Sie mich, wenn etwas besseres zur Verfügung steht)

Der Code (unten) Ich habe Compiles geschrieben und läuft. Die anfänglichen Name/Wert-Paare zeigen zwar Ordnung, aber der Versuch, den Wert des ersten Elements zu ändern, bringt nichts.

Ich habe an mehreren listbox Beispiele gesucht, aber kann einen Wert in einer Listbox nicht auf einfache Weise finden, wenn

int main() 
{ 
using namespace nana; 

// form to hold everything 
form fm; 

// listbox to be the property grid 
listbox lb(fm, nana::rectangle(10, 10, 280, 120)); 

// column headers 
lb.append_header("Name", 200); 
lb.append_header("Value", 200); 

// add two items to the default category 
lb.at(0).append({"A", "0"}); 
lb.at(0).append({"B", "0"}); 

// change value of A item to 32 (fails to do anything) 
lb.at(listbox::index_pair(0,1)).value("32"); 

fm.show(); 
exec(); 
} 

auch versucht (nicht kompiliert)

lb.at(listbox::index_pair(0,1)).value({"A","32"}); 

initialisiert zu ändern und (läuft, hat keine Wirkung)

lb.anyobj(0, 0, "32"); 

Antwort

2

Sie verwenden sehr niedrige Funktionen. Es gibt more convenient higth level functions zum Festlegen/Ändern der Werte/Text/Elemente in der Listbox (mit STL containers oder resolvers).

Vorausgesetzt, dass Sie diese niedrigen Niveau Funktion nutzen möchten becouse Sie Ihre eigene higth Level-API implementieren möchten, sind hier einige Fakten:

Die value Funktion des item_proxy Sie accesing mit at (index_pair) geben Ihnen Zugang zu einem Objekt, das Sie zuvor an diesen Gegenstand angehängt haben. Sie haben kein Objekt angehängt. Sie können zuerst ein Objekt anhängen oder Sie können weiterhin direkt mit dem Text arbeiten. Der einfachste "Hack" ist die Verwendung des Funktionstextes: lb.at(listbox::index_pair(0,1)).text(1,"32"), der den Text für die Spalte 1 dieses Elements festlegt.

EDIT: Ein relativ einfach zu verstehen Erklärung: 3-methods-to-insert-data-into-listbox

+0

Works. Vielen Dank. "Es gibt bequemere Funktionen auf hoher Ebene." Wie heißen sie? Wo ist ihre Dokumentation? Gibt es ein einfaches einleitendes Beispiel, das sie benutzt? Update: gerade gefunden https://sourceforge.net/p/nanapro/blog/2016/04/preview-of-listbox-model/ – ravenspoint

+0

Vielen Dank für die Links zur Dokumentation. Ich habe mit diesen gearbeitet. Sie funktionieren gut. JEDOCH habe ich ein Problem damit, wie komplex und schwer zu verstehen sie sind. Es scheint mir, dass es einfacher ist, einen Verweis auf den STL-Container zu übergeben, um ihn leichter zu verstehen und zu implementieren. Also habe ich das wieder gemacht. Siehe https://github.com/JamesBremner/nana_property_grid – ravenspoint

Verwandte Themen