Russian Qt Forum

Qt => Общие вопросы => Тема начата: kataklysm от Июль 15, 2010, 23:43



Название: массив компонентов
Отправлено: kataklysm от Июль 15, 2010, 23:43
Доброе время суток. Подскажите пожалуйста как реализовать.
Код:
for (int i =0; i<8;i++)
    {
        QTableWidget *tableWidget[i] = new QTableWidget(this);
        tabWidget->addTab(tableWidget[i],"test");
    }
данный код не прокатывает. У кого какие есть идеи по реализации массива компонентов. Спасибо.


Название: Re: массив компонентов
Отправлено: m_ax от Июль 16, 2010, 00:13
Думаю, надо так:

.h файл:
Код
C++ (Qt)
...
private:
   enum {SIZE = 8};
   QTableWidget **tableWidget;
...
 

.cpp файл:
Код
C++ (Qt)
...
   tableWidget = new QTableWidget*[SIZE];
   for (int i = 0; i < SIZE; ++i) {
       tableWidget[i] = new QTableWidget(this);
       tabWidget->addTab(tableWidget[i], "test");
   }
...
 

Но это как то не айс..
Лучше использовать QList для этих целей..


Название: Re: массив компонентов
Отправлено: GreatSnake от Июль 16, 2010, 06:37
kataklysm
Может перед тем как браться за Qt стоит сначала освоить азы C/C++?


Название: Re: массив компонентов
Отправлено: kataklysm от Июль 16, 2010, 08:36
kataklysm
Может перед тем как браться за Qt стоит сначала освоить азы C/C++?
А для чего тогда форумы, если даже спросить и узнать мнение других, нельзя? Как Вы себе представляете обучение только по книгам? Я лично ни как...

m_ax
Спасибо большое.
P.S.offtop.


Название: Re: массив компонентов
Отправлено: ufna от Июль 16, 2010, 09:10
Вообще QList - самое нормальное решение в данном случае, имхо


Название: Re: массив компонентов
Отправлено: GreatSnake от Июль 16, 2010, 10:17
Цитировать
А для чего тогда форумы, если даже спросить и узнать мнение других, нельзя? Как Вы себе представляете обучение только по книгам? Я лично ни как...
Я как бы вас понимаю.
Но ведь ваш вопрос в принципе никакого отношения к Qt  не имеет.
Он относится к знаниям языка C/C++ и по идее не должен быть в этой ветке форума.


Название: Re: массив компонентов
Отправлено: kataklysm от Июль 16, 2010, 10:31
Цитировать
А для чего тогда форумы, если даже спросить и узнать мнение других, нельзя? Как Вы себе представляете обучение только по книгам? Я лично ни как...
Я как бы вас понимаю.
Но ведь ваш вопрос в принципе никакого отношения к Qt  не имеет.
Он относится к знаниям языка C/C++ и по идее не должен быть в этой ветке форума.

А вот за это искренне извиняюсь, что то  даже не подумал об этом....


Название: Re: массив компонентов
Отправлено: kataklysm от Июль 16, 2010, 14:04
Вообще QList - самое нормальное решение в данном случае, имхо
Мне кажется тут QList не прокатит, так как на каждую например (n-количество баз) нужно выводить дополнительно 3-QLineEdit, 1-QTableWidget и данные из QTableWidget сохранить в структурированный файл.


Название: Re: массив компонентов
Отправлено: ufna от Июль 16, 2010, 16:30
Простите, а в чем отличие от Вашей схемы? Массив [..] или в контейнере - разница лишь в обращении, а остальное то как меняется, особенно при работе с виджетами? :) те же указатели в него загонять и работай как хочешь.


Название: Re: массив компонентов
Отправлено: kataklysm от Июль 16, 2010, 23:00
Нусь, продолжаем тему:
Создал все что хотел, теперь не понятная проблема с toolBox.

Часть кода где проявляется ошибка:

Код:
        QGridLayout **Layout;
        Layout = new QGridLayout*[SIZE];
        Layout[i] = new QGridLayout(this);
        //Layout[i]->addWidget(cksone[i],0,0,8,0);
        Layout[i]->addWidget(labcksBase[i],2,1);
        //Layout[i]->addWidget(checkbox[i],2,2);
        Layout[i]->addWidget(cksBase[i],3,1);
        Layout[i]->addWidget(labcksLogin[i],4,1);
        Layout[i]->addWidget(cksLogin[i],5,1);
        Layout[i]->addWidget(labcksPass[i],6,1);
        Layout[i]->addWidget(cksPass[i],7,1);

        QWidget **wgt;
        wgt = new QWidget*[SIZE];
        wgt[i]= new QWidget(this);
        wgt[i]->setDisabled(true);
        wgt[i]->setLayout(Layout[i]);
        toolBox->addItem(wgt[i],str);
        vbox->addWidget(toolBox);

    }
    vbox->addStretch(2);
    vbox->addWidget(new QLabel(tr("Директория выгрузки:"),this));
    vbox->addWidget(DIR);
    vbox->addWidget(button);
    vbox->addWidget(buttonsave);
    //vbox->addStretch(2);
    hbox->addLayout(vbox);
    mainWidget->setLayout(hbox);


Название: Re: массив компонентов
Отправлено: m_ax от Июль 16, 2010, 23:15
Жэсть))

Кстати, если вам так уж хочется именно массив объектов, то можно сделать и проще (в случае если его размер заранее известен):

.h файл
Код
C++ (Qt)
private:
   enum {SIZE = 8};
   QTableWidget *tableWidget[SIZE];
 

.cpp файл:
Код
C++ (Qt)
for (int i = 0; i < SIZE; ++i) {
       tableWidget[i] = new QTableWidget(this);
       tabWidget->addTab(tableWidget[i], "test");
   }
 

Но правильнее использовать, всё же QList.

А в вашем случае, вообще нет необходимости в ни в массиве ни в QList'е (на мой взгляд).

З.Ы. Интересно чему равно i ? Если приведённый кусок  кода в цикле ещё находится, то даже не знаю что и сказать :-)


Название: Re: массив компонентов
Отправлено: kataklysm от Июль 16, 2010, 23:18
Интересно чему равно i ? Если приведённый кусок  кода в цикле ещё находится, то даже не знаю что и сказать :-)
В данный момент = 3(из скрина); но может быть и 10 :).

P.S. Извиняйте но QList не понял как с ним работать.