Обновил. Только теперь когда добавляю треугольник, он не отображается, но если нажать alt+tab два раза, то окно вместе в нужным обновиться. Наверное надо где-то updateGL делать или что-то другое.
moc_sixie_interface это то, где делаются слоты и сигналы?
Эти файлы автоматически генерируются с помощью moc (meta object compiler) из cpp-файлов и header'ов. Включать их в репозиторий не следует.
Файлы с расширением «*.user» используются для сохранение путей к компиляторам, к Qt и прочим премудростям в Qt Creator. Короче, это твои платформозависимые проектные файлы, в отличие от файлов *.pro, они только мешаются, так как Qt Creator идёт по этим путям и т. д.
Но только не так, как ты написал. Я использовал glDraw(). И все работает.
Ну если ты и дальше хочешь стрелять себе в ноги, действовать наугад и методом тыка и не читать документацию, то так и будешь погрязать в элементарных вопросах, а твоя поделка будет работать по известному славянскому принципу «и так сойдёт».
В документации чётко написано следующее:
If you need to trigger a repaint from places other than paintGL() (a typical example is when using timers to animate scenes), you should call the widget's updateGL() function.
Если сделано по уму, то никак, ибо View на то и View, чтобы лишь показывать. Для изменения надо редактировать данные в модели (если кодом), либо через делегаты (если гуём). А если сделано как обычно, то делай по уму
Это пока ты отлаживаешься в одной машине и одной ОС. А когда столкнёшься с тем, что этот проюзер замусоривает тебе историю коммитов, возможно, начнёшь думать иначе.
Я имею ввиду, что, в общем незнаю как тебе обьяснить даже, но я так и не нашел варианта. В gtk то делал, а здесь пока незнаю как. Что я немогу сделать, так это число «1», которая предоставляет модель.
После такого детального описания не выдержал и полез в код. И сходу нашёл бессмысленную инструкцию и утечку памяти (objects.cpp:6): pTreeView = new QTreeView(0); — ты создаёшь экземпляр QTreeView в конструкторе класса, наследованного от QTreeView, так ещё и не используешь его потом (и, что характерно, не чистишь память в деструкторе, его у тебя вообще нет для твоего класса. Привет, вторая утечка памяти!).
Что я немогу сделать, так это число «1», которая предоставляет модель
Не выдержал повторно, скачал сорцы и попытался собрать, но получил фигу, так как у тебя вообще нет проверки на то, какой версии Qt может быть в системе (есть greaterThan, но он вообще погоды не делает) — у меня, например, стоит и четвёрка, и пятёрка, и по умолчанию используется именно четвёрка. Эксперименты с ручным указанием версии не сработали, поэтому на сборку забил.
Ещё я не понял, зачем ты удаляешь модель (objects.cpp:23: void Objects::add_objects(QList<gl_element> *list_objects)), а потом заново её создаёшь, когда есть специальный метод clear(). Про передачу указателя вместо ссылки вообще молчу. К тому же, вот это:
for ( int i = 0; i < list_objects->size(); i++ )
{
QModelIndex index = model->index(i, 0);
model->setData(index, it->name );
++it;
}
вообще страшно. Я даже не уверен, что оно должно работать, т. к. ты обращаешься к индексу несуществующей ячейки. Почему бы не сделать по-человечески?
// Using int instead of size_t because of Qt interfacesint objcount = list_objects->size();
for (int i = 0; i < objcount; i++, ++it)
{
QStandardItem *item = newQStandardItem(it->name);
model->appendRow(item);
}
Глянул код ещё раз, можно даже сделать лучше, избавившись от счётчика:
auto it = list_objects->constBegin();
while(it != list_objects->constEnd())
{
QStandardItem *item = newQStandardItem(it->name);
model->appendRow(item);
++it;
}
Уверен, если глянуть ещё шире, захватив во внимание не только эту функцию, то можно вообще много чего переделать, добавив стабильности, читаемости, скорости и предсказуемости. Дерзай
Я думал, что только при создании объекта можно указать сколько будет данных.
ты обращаешься к индексу несуществующей ячейки.
Она существует, я же создал перед этим model, да и тем более мне от этого нужен был только index, данные уже заносятся как раз указав индекс, так просто QModelIndex не создать наверное.
при создании объекта можно указать сколько будет данных
В данном случае это экономия на спичках, у тебя накладных расходов на удаление и создание объекта будет столько, что выигрыш от разового выделения памяти нивелируется.
Она существует, я же создал перед этим model
Да, не увидел, что ты задаёшь размер модели. Тебе разумнее будет просто очистить её (clear()), а потом делать appendRow(), как я показывал. Либо вообще вместо QStandardItemModel брать QStringListModel, у тебя всё равно данные списком идут и ничего, кроме текста, не содержат.
но получил фигу, так как у тебя вообще нет проверки на то, какой версии Qt может быть в системе
А какие для этого должны быть файлы?
Понятия не имею, я с QMake не работал. У меня в проектах везде CMake используется
У меня программа виснет. Не могу понять из-за чего. Может кто чего дельного подскажет.
Она от тебя устала, и говорит тебе этим, горшочек не вари.
Брось и уйди, на C не пиши. Вообще не пиши, только если в ВК.
Хотя не, повесится ещё кто.
Просто не пиши, и к компу не подходи.