2017-02-23 5 views
2

In meinem Programm habe ich eine Reihe von Registerkarten und auf jeder Registerkarte gibt es eine Combobox und eine QListWidget. Basierend auf der Auswahl auf der Combobox wird QListWidget aufgefüllt.Initialisierung eines Zeigers auf QListWidgetItem Qt 5.8

Nun, was ich versuche zu erreichen ist, dass der Benutzer eine "APPLY" -Taste nach dem Auswählen einer Reihe von Elementen auf der "Checkable" -Liste Widget für eine bestimmte Auswahl in Combobox, ich lese den Bool-Status von jedem Element auf dem Listen-Widget mit einem Zeiger QListWidgetItem Zeiger auf das Listen-Widget

Dies ist Teil meines Codes;

void MainWindow::on_applyButton_clicked() 
{ 
    //Reset list 
    MainWindow::revenueList.clear(); 

    //Processing income statement 
    //Select the first item on inc_st_combo 
    ui->inc_st_comb->setCurrentText("Revenue Growth"); 

    //Create an iterator 
    QStringListIterator iter(MainWindow::revenue_labels); 

    //Loop through the list widget and read bool status 
    while(iter.hasNext()) 
    { 
     //Index for the QList 
     int index = 0; 
     //Create a QListWidgetItem pointer 
     QListWidgetItem *listItem = new  QListWidgetItem(iter.next(),Ui_MainWindow::inc_st_list); 

     bool status = listItem->checkState(); 
     qDebug() << "Status: " << status << endl; 

     MainWindow::revenueList.append(status); 
    } 

    qDebug() << "List: " << MainWindow::revenueList << endl; 
} 

Mein Problem ist, dass, wenn ich versuche, die QLsitWidgetItem auf der folgenden Zeile zu initialisieren;

QListWidgetItem *listItem = new QListWidgetItem(iter.next(),Ui_MainWindow::inc_st_list); 

Qt zurückzukehren, wird folgende Fehler;

/Users/Vino/Documents/My Stuff/Qt Projects/Fundemental Analysis/FundementalAnalysis/mainwindow.cpp:389: error: invalid use of non-static data member 'inc_st_list' QListWidgetItem *listItem = new QListWidgetItem(iter.next(),Ui_MainWindow::inc_st_list); ~~~~~~~~~~~~~~~^~~~~~~~~~~

Wie initialisiere ich die QListWidgetItem Zeiger zu einem bestimmten listWidget auf dem Formular zeigen?

Antwort

2

Wenn Sie einen Zeiger auf ein bereits vorhandenes Objekt möchten Sie nicht new verwenden, müssen Sie es die Adresse des vorhandenen Objekt zuweisen:

int pos = 0; //determine the right position 
QListWidgetItem *listItem = ui->inc_st_list->item(pos); 
+0

Dank Kumpel, es funktioniert :) – Vino

Verwandte Themen