Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QT4 Увеличение размера таблицы. 
V
    Опции темы
Bars_rb
Дата 19.5.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.2.2007
Где: Ташкент

Репутация: нет
Всего: нет



Такой вопрос.
Есть таблица. QTableWidget.
При создании она 2х1.
Но во время работы надо ее увеличить.
Делая setRowCount(5) количество строк увеличивается, но туда нельзя ничего записать.
Ковыряя сырцы понял, что надо сделать setItem для каждой ячейки.
Но при этом для каждой надо создать отдельный элемент типа QTableWidgetItem.
Я пробовал создать один, и всем ячейкам его присвоить - не хочет.
ПО этому вопрос. Как это дело можно обойти, либо автоматом все ячейки сделать доступными.
В принципе в таблице будет только текст. По этому мож есть какой-то другой компонент?
PM MAIL ICQ   Вверх
JackYF
Дата 19.5.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(Bars_rb @  19.5.2008,  11:06 Найти цитируемый пост)
Но при этом для каждой надо создать отдельный элемент типа QTableWidgetItem.

да.

Цитата(Bars_rb @  19.5.2008,  11:06 Найти цитируемый пост)
Как это дело можно обойти

зачем?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 19.5.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(Bars_rb @  19.5.2008,  12:06 Найти цитируемый пост)
Как это дело можно обойти, либо автоматом все ячейки сделать доступными.

Унаследоваться от QTableWidget и при изменении кол-ва строк/столбцев заливать их new QTableWidgetItem() автоматом. Если это устраивает, конечно...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Bars_rb
Дата 20.5.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.2.2007
Где: Ташкент

Репутация: нет
Всего: нет



Цитата(JackYF @ 19.5.2008,  12:34)
Цитата(Bars_rb @  19.5.2008,  11:06 Найти цитируемый пост)
Как это дело можно обойти

зачем?

 QTableWidgetItem *__tableItem = new QTableWidgetItem();
    table->setItem(0, 0, __tableItem);
    QTableWidgetItem *__tableItem1 = new QTableWidgetItem();
    table->setItem(0, 1, __tableItem1);
    QTableWidgetItem *__tableItem2 = new QTableWidgetItem();
    table->setItem(1, 0, __tableItem2);

Вот так происходит, если делать дизигнером.
то есть он сам для каждой ячейки создает указатель на QTableWidgetItem.

А у меня количество ячеек не известно.
И как в цикле каждой присвоить этот указатель через setItem - я не знаю.
Собстно в этом вся проблема.
PM MAIL ICQ   Вверх
XavierElf
Дата 20.5.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



ну так сделай так:
Код

QTableWidgetItem *tableItem = new QTableWidgetItem();
table->setItem(0, 0, tableItem);
tableItem = new QTableWidgetItem();
table->setItem(0, 1, tableItem);
tableItem = new QTableWidgetItem();
table->setItem(1, 0, tableItem);

--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
archimed7592
Дата 20.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(Bars_rb @  20.5.2008,  12:55 Найти цитируемый пост)
И как в цикле каждой присвоить этот указатель через setItem - я не знаю.

Код

int rowCount = 100;
int colCount = 2;
QTableWidget *table = ...;
for(int r = 0; r < rowCount; ++r)
    for(int c = 0; c < colCount; ++c)
        if (table->item(r, c) == 0)
            table->setItem(r, c, new TableWidgetItem());



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Bars_rb
Дата 20.5.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.2.2007
Где: Ташкент

Репутация: нет
Всего: нет



Всем огромное спасибо.

XavierElf, я пытался, но немного по другому. Так не пробовал. Оказалось - работает. smile Огромное спасибо.


archimed7592, и как-то так я тоже пытался, но видимо что-то не то делал. Твой способ как-то немного красивее смотрится. Спасибо.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.