Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
tram1

Добавить ветку в элемент QTreeWidget

29.06.2013, 14:03. Показов 19454. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пытаюсь добавить ветку в элемент QTreeWidget. Вот такой вариант работает:

C++ (Qt)
1
2
3
QStringList qStrL;
qStrL << "secondname";
ui->treeWidget->addTopLevelItem(new QTreeWidgetItem(qStrL);
но когда я пытаюсь сделать немного иначе:

C++ (Qt)
1
2
3
4
QStringList qStrL;
qStrL << "secondname";
QTreeWidgetItem * s_tree = new QTreeWidgetItem(qStrL);
ui->treeWidget->addTopLevelItem(s_tree);
то никаких элементов не добавляется. Может быть я конечно не понимаю, но по моему это одно и то же действие, и должно работать. Подскажите, в чем проблема? Заранее спасибо!
Воспользоваться первым не могу, потому что мне еще нужно добавить дополнительные ответвления к элементу.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2013, 14:03
Ответы с готовыми решениями:

Война с drag and drop в QTreeWidget c отслеживанием в какую ветку был перенесен QTreeWidgetItem
Не могу решить такую задачу. Есть обычная иерархия QTreeWidget. Как реализовать drag and drop...

Сохранение текущего элемент в QTreeWidget
Добрый день, возникла проблема. Добавляю каждую секунду (таймер) в QTreeWidget элементы, перед...

QTreeWidget
Мне нужно поместить элемент в список rezult = new QTreeWidget; . . . QTreeWidgetItem*...

85
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
19.06.2025, 17:49
Студворк — интернет-сервис помощи студентам
Немного переделал код, теперь проблема в том что вторая колонка заполняется но третья нет, подскажите в чем ошибка?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
QSqlQuery mobjekts(db);
    mobjekts.exec("SELECT mid, mobject FROM MObjekt");
    while (mobjekts.next()) {
        QStandardItem* mobjekt = new QStandardItem(mobjekts.record().value(1).toString());
        model->appendRow(mobjekt);
        QSqlQuery sobjects(db);
        sobjects.prepare("SELECT sid, sobjekt FROM SObjekt WHERE mid="+mobjekts.record().value(0).toString());
        sobjects.exec();
        while (sobjects.next()) {
            QStandardItem* sobject = new QStandardItem(sobjects.record().value(1).toString());
            mobjekt->appendRow(QList<QStandardItem *>() << mobjekt << sobject);
            QSqlQuery objekts(db);
            objekts.prepare("SELECT id FROM Objekt WHERE sid="+sobjects.record().value(0).toString());
            objekts.exec();
            while(objekts.next()) {
                QStandardItem* objekt = new QStandardItem(objekts.record().value(0).toString());
                sobject->appendRow(QList<QStandardItem *>() << mobjekt << sobject << objekt);
            }
        }
    }
Добавлено через 1 час 20 минут
блин, здесь еще и куча дубликатов создается оказывается...
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
20.06.2025, 15:39
никто не подскажет как мне данные по колонкам раскидать?
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
20.06.2025, 16:26
Цитата Сообщение от aksident Посмотреть сообщение
mobjekt->appendRow(QList<QStandardItem *>() << mobjekt << sobject);
Цитата Сообщение от aksident Посмотреть сообщение
sobject->appendRow(QList<QStandardItem *>() << mobjekt << sobject << objekt);
неужели IDE не выдает предупреждений при добавлении нода самого в себя? Делай копии ноды тогда уж, если нужна такая странная структура...

Цитата Сообщение от aksident Посмотреть сообщение
никто не подскажет как мне данные по колонкам раскидать?
я пример для тебя старался писал, с кучей пояснений (видимо зря время потратил), там это есть. даже отдельный кусок кода с добавлением сабноды вывел в одном из последующих постов.
Походу хреновый я советчик, пошел я нахрен, прощай
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
20.06.2025, 16:52
Цитата Сообщение от sdf45 Посмотреть сообщение
неужели IDE не выдает предупреждений при добавлении нода самого в себя? Делай копии ноды тогда уж, если нужна такая странная структура...
я нашел это на забугорном форуме, тоже показалось странным но попробовал и для 2 колонок заработало.
Цитата Сообщение от sdf45 Посмотреть сообщение
Походу хреновый я советчик, пошел я нахрен, прощай
да не хреновый ты советчик, тормози, сейчас твой пример распиливаю.
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
20.06.2025, 17:37
взял твой код из поста 78, выкинул создание таблиц и все с ней связанное, подставил свои запросы и получил нечто странное
Миниатюры
Добавить ветку в элемент QTreeWidget  
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
20.06.2025, 22:55
Цитата Сообщение от aksident Посмотреть сообщение
взял твой код из поста 78, выкинул создание таблиц и все с ней связанное, подставил свои запросы и получил нечто странное
Пример- для понимания самого принципа работы по сабжу, и применения этого понимания для решения своих задач.
Я же откуда знаю структуру твоих таблиц?

И кстати:
Цитата Сообщение от aksident Посмотреть сообщение
интересует заполнение из БД, в ней имеются 5 таблиц связанные по иерархии ключами
Цитата Сообщение от aksident Посмотреть сообщение
есть пять таблиц из трех столбцов - id, data, pid, связаны первичными ключами
Я понял так, что используются FOREIGN KEY, а если это не так, то и запрос будет другим, -что то вроде (если бы в моем примере не было связки, а просто три таблицы)
C++ (Qt)
1
2
3
4
5
query.exec("SELECT Companies.company, Names.name, Surnames.surname"
               " FROM Companies"
               " LEFT JOIN Names ON Companies.id=Names.id"
               " LEFT JOIN Surnames ON Companies.id=Surnames.id");
//или чего-то более сложное может быть, это к спецам по SQL
И погнал разбирать запрос циклом while на части, строить дерево.

А если есть сводная таблица, где данные уже сгрупированы
Цитата Сообщение от aksident Посмотреть сообщение
в базе есть еще шестая таблица собранная из первых пяти, в этом случае, как я понял, из этой таблицы в query.exec SELECTом выдираю те столбцы из которых буду строить дерево и все?
То именно так, делаешь выборку нужного, разбираешь запрос и строишь дерево. Проще некуда.

Попробуй сделать одну табличку QTableView, и одним sql query для QSqlQueryModel вывести в нее нужные данные с пяти твоих таблиц(или из одной сводной если она существует). Одним запросом сразу.
Если получится- разбираешь этот запрос одним циклом while и строишь уже дерево.

Вообще, я даже не знаю SQL, чтоб ты понимал. И на Qt уже как минимум год не писал ничего
Так что вот как то так, а я задолбался
(в дальнейшем отвечаю на вопросы в виде "листинг с проблемным кодом + вопрос по этому коду")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2025, 22:55

QTreeWidget "Drag and Drop" только на своем уровне
Как проще реализовать. чтобы перетаскивание в treewidget было возможно только на том уровне, на...

Как вставить в QTreeWidget
Я создал в QtCreator QTreeWidget Что нужно внутри слота написать, чтобы реализовать следующее:...

Как отловить сигнал при нажатии по QTreeWidget левой кнопкой не по элементу
Столкнулся с проблемой: Как отловить сигнал при нажатии по QTreeWidget левой кнопкой не по...

Узнать количество веток в QTreeWidget
Есть QTreeWidget c 3 уровнями QTreeWidgetItem. Вопрос: как узнать, есть ли в дереве ветки 3-го...

QTreeWidget
Возникло пару проблем по данному винджету. На QtreeWidget добавлено несколько элементов(все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
86
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru