Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mazol от Февраль 21, 2010, 12:40



Название: QTable
Отправлено: mazol от Февраль 21, 2010, 12:40
Создал TableWidget, количество строк и столбцов вводится пользователем с помощью SpinBox.
И при запуске во всех строчках должна появиться последовательность Фибоначчи. Первые 2 столбца я заполнил "1", а дальше не знаю, как брать предыдущий елемент и к нему прибавлять предыдущий предыдущего:)
void MainWindow::go(){
    for (int k=0; k<table->rowCount()+1; k++){
        for (int n=0; n<2; n++){
            QTableWidgetItem *item = new QTableWidgetItem("1");
            table->setItem(k,n,item);
        }
    }
   for (int i=0; i<table->rowCount()+1; i++){
        for (int j=2; j<table->columnCount()+1; j++){
            QTableWidgetItem *item2 = table->takeItem(i,j);
            QTableWidgetItem *item3 = table->takeItem(i,j+1);
            int a=item2+item3;
            table->setItem(i,j+3,a);
        }
    }
}


Название: Re: QTable
Отправлено: alexman от Февраль 21, 2010, 13:09
1. Название темы нужно писать корректно (не отображает сути вопроса!).
2. Для последовательности Фибоначчи базис имеет два начальных значения 1,1.
3. Честно говоря не понятно, что требуется, но если я правильно понял, то чтобы получить столбец Фибонначи требуется:
Код:
  table->item( 0, 0 )->setText( "1" );
           table->item( 1, 0 )->setText( "1" );
           for ( int i = 2; i < table->rowCount(); ++i ) {
               QTableWidgetItem* item1 = table->item(i - 2,0);
               QTableWidgetItem* item2 = table->item(i - 1,0);
               table->item(i,0)->setText( QString( "%1" ).arg( item1->text().toInt() + item2->text().toInt() ) );
           }
4. Лучше использую модели.


Название: Re: QTable
Отправлено: mazol от Февраль 22, 2010, 01:40
Первый раз создавал, в следуйщий раз учту. нужно в строке записать последовательность Фибоначчи, что-то ваш код тоже не конпилируется :(


Название: Re: QTable
Отправлено: mazol от Февраль 22, 2010, 23:23
help!:(


Название: Re: QTable
Отправлено: Igors от Февраль 22, 2010, 23:38
А если "мухи отдельно - борщ отдельно"? Есть расчеты и есть UI. Смешивать их - всегда плохо. Так что посчитайте последовательность Фибоначчи используя любой контейнер (std::vector,  QVector, QList и.т.п.) а потом, используя посчитанный контейнер как data model, заполните таблицу. И все будет гуд и займет пол-часа.


Название: Re: QTable
Отправлено: mazol от Февраль 23, 2010, 00:44
А если "мухи отдельно - борщ отдельно"? Есть расчеты и есть UI. Смешивать их - всегда плохо. Так что посчитайте последовательность Фибоначчи используя любой контейнер (std::vector,  QVector, QList и.т.п.) а потом, используя посчитанный контейнер как data model, заполните таблицу. И все будет гуд и займет пол-часа.
ну посчитать в QVector i QList  я смог бы, но а дата модел - первый раз слышу, мы ще не проходили такое :(


Название: Re: QTable
Отправлено: SABROG от Февраль 23, 2010, 00:50
Это в каком заведении Qt преподают? :o


Название: Re: QTable
Отправлено: mazol от Февраль 23, 2010, 00:51
универ мой, ХАИ (Харьковский авиационный инстититут)  ;D ;D


Название: Re: QTable
Отправлено: mazol от Февраль 23, 2010, 21:01
ну так, что? помогите с кодом, очень нужно!