2017-02-23 106 views
2

В моей программе у меня есть серия вкладок, и на каждой вкладке есть выпадающая скобка и QListWidget. На основе выбора в поле со списком будет заполнено QListWidget.Инициализация указателя на QListWidgetItem Qt 5.8

Теперь я пытаюсь добиться того, что пользователь нажимает кнопку «ПРИМЕНИТЬ» после выбора серии элементов в виджетах списка «проверяемый» для данного выбора в поле со списком, я буду читать статус bool каждого элемент в виджетах списка с помощью указателя QListWidgetItem Указатель на список виджета

Это часть моего кода;

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; 
} 

Моя проблема заключается в том, что, когда я пытаюсь инициализировать QLsitWidgetItem на следующей строке;

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

Qt возвращает следующую ошибку;

/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); ~~~~~~~~~~~~~~~^~~~~~~~~~~

Как инициализацию QListWidgetItem указатель к точке на определенном listWidget на форме?

ответ

2

Если вы хотите указатель на уже существующий объект не будет использовать new, необходимо присвоить ему адрес существующего объекта:

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

Спасибо товарищу, он работает :) – Vino