Russian Qt Forum
Ноябрь 23, 2024, 20:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: массив компонентов  (Прочитано 6022 раз)
kataklysm
Гость
« : Июль 15, 2010, 23:43 »

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

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Июль 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 для этих целей..
« Последнее редактирование: Июль 16, 2010, 00:34 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Июль 16, 2010, 06:37 »

kataklysm
Может перед тем как браться за Qt стоит сначала освоить азы C/C++?
Записан

Qt 5.11/4.8.7 (X11/Win)
kataklysm
Гость
« Ответ #3 : Июль 16, 2010, 08:36 »

kataklysm
Может перед тем как браться за Qt стоит сначала освоить азы C/C++?
А для чего тогда форумы, если даже спросить и узнать мнение других, нельзя? Как Вы себе представляете обучение только по книгам? Я лично ни как...

m_ax
Спасибо большое.
P.S.offtop.
Записан
ufna
Гость
« Ответ #4 : Июль 16, 2010, 09:10 »

Вообще QList - самое нормальное решение в данном случае, имхо
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июль 16, 2010, 10:17 »

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

Qt 5.11/4.8.7 (X11/Win)
kataklysm
Гость
« Ответ #6 : Июль 16, 2010, 10:31 »

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

А вот за это искренне извиняюсь, что то  даже не подумал об этом....
Записан
kataklysm
Гость
« Ответ #7 : Июль 16, 2010, 14:04 »

Вообще QList - самое нормальное решение в данном случае, имхо
Мне кажется тут QList не прокатит, так как на каждую например (n-количество баз) нужно выводить дополнительно 3-QLineEdit, 1-QTableWidget и данные из QTableWidget сохранить в структурированный файл.
Записан
ufna
Гость
« Ответ #8 : Июль 16, 2010, 16:30 »

Простите, а в чем отличие от Вашей схемы? Массив [..] или в контейнере - разница лишь в обращении, а остальное то как меняется, особенно при работе с виджетами? Улыбающийся те же указатели в него загонять и работай как хочешь.
Записан
kataklysm
Гость
« Ответ #9 : Июль 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);
« Последнее редактирование: Июль 16, 2010, 23:07 от kataklysm » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #10 : Июль 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 ? Если приведённый кусок  кода в цикле ещё находится, то даже не знаю что и сказать :-)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
kataklysm
Гость
« Ответ #11 : Июль 16, 2010, 23:18 »

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

P.S. Извиняйте но QList не понял как с ним работать.
« Последнее редактирование: Июль 16, 2010, 23:20 от kataklysm » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.216 секунд. Запросов: 23.