LINUX.ORG.RU

Какой прекрасный баг-репорт! Отвечу, как мой препод по программированию: «у тебя в программе ошибка».

DELIRIUM ☆☆☆☆☆ ()

Не интересно

/thread

anonymous ()
Ответ на: комментарий от DELIRIUM

Обновил. Только теперь когда добавляю треугольник, он не отображается, но если нажать alt+tab два раза, то окно вместе в нужным обновиться. Наверное надо где-то updateGL делать или что-то другое.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5
$ git diff
diff --git a/ogl.cpp b/ogl.cpp
index 8d42f1c..4aaa814 100644
--- a/ogl.cpp
+++ b/ogl.cpp
@@ -52,7 +52,7 @@ void OGL::draw_triangle()
     //ql.append(ao);
     ql.push_back(ao);
 
-    paintGL();
+    updateGL();
 
 #if 0
     glBegin (GL_QUADS);
EXL ★★★★★ ()
Ответ на: комментарий от EXL

Вот эта хрень зачем тебе в репозитории?

moc_sixie_interface это то, где делаются слоты и сигналы? А то уже не могу вспомнить, или для чего эти файлы moc и .user?

u0atgKIRznY5 ()
Ответ на: комментарий от EXL

Помещай в .gitignore это дерьмо.

Я поместил названия двух файлов в .gitignore, добавил gitignore с помощью git add. Сделал push, но те файлы все равно отправились.

u0atgKIRznY5 ()

Кстати!Называй коммиты правильно, а-ля «bring class ComponentX::FooBar», «fix issue with timeouts» и т.д.

xoomer ()
Ответ на: комментарий от u0atgKIRznY5

moc_sixie_interface это то, где делаются слоты и сигналы?

Эти файлы автоматически генерируются с помощью moc (meta object compiler) из cpp-файлов и header'ов. Включать их в репозиторий не следует.

Файлы с расширением «*.user» используются для сохранение путей к компиляторам, к Qt и прочим премудростям в Qt Creator. Короче, это твои платформозависимые проектные файлы, в отличие от файлов *.pro, они только мешаются, так как Qt Creator идёт по этим путям и т. д.

EXL ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

Но только не так, как ты написал. Я использовал 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.

http://doc.qt.io/qt-5/qglwidget.html#details

EXL ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

Я поместил названия двух файлов в .gitignore, добавил gitignore с помощью git add. Сделал push, но те файлы все равно отправились.

git rm moc_sixie_interface.cpp Sixie.pro.user
git commit -m "Remove shit files"
git push
EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от u0atgKIRznY5

Что значит «пусть будет»? Это производные файлы, фактически мусор. Такое в репозитории не положено засовывать.

I-Love-Microsoft ★★★★★ ()

Мда, как подробно расписано... А коммиты просто поражают информативностью.

Release ()

не рисуется объект в opengl. на gtk

программа подвисает на qt

Ждём «Йа свалил на венду, нам наконец-то все работает».

anonymous ()
Ответ на: комментарий от u0atgKIRznY5

как мне изменить значение ячейки в TreeView?

Если сделано по уму, то никак, ибо View на то и View, чтобы лишь показывать. Для изменения надо редактировать данные в модели (если кодом), либо через делегаты (если гуём). А если сделано как обычно, то делай по уму

XMs ★★★★★ ()
Ответ на: комментарий от DELIRIUM

Сдаётся мне, что это такой тонкий пиар своего продукта на гитхабе.

Хотя у него и на гитхабе «No description».

anonymous ()
Ответ на: комментарий от u0atgKIRznY5

Оно автоматически создалось. Да пусть будет.

Это пока ты отлаживаешься в одной машине и одной ОС. А когда столкнёшься с тем, что этот проюзер замусоривает тебе историю коммитов, возможно, начнёшь думать иначе.

anonymous ()
Ответ на: комментарий от XMs

А если сделано как обычно, то делай по уму

Виктор Степанович, с воскрешением!

anonymous ()
Ответ на: комментарий от anonymous

Какого продукта? Там студенческая лаба по рисованию квадратиков.

DELIRIUM ☆☆☆☆☆ ()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от XMs

Я имею ввиду, что, в общем незнаю как тебе обьяснить даже, но я так и не нашел варианта. В gtk то делал, а здесь пока незнаю как. Что я немогу сделать, так это число «1», которая предоставляет модель.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

После такого детального описания не выдержал и полез в код. И сходу нашёл бессмысленную инструкцию и утечку памяти (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 interfaces
int objcount = list_objects->size();
for (int i = 0; i < objcount; i++, ++it)
    {
        QStandardItem *item = new QStandardItem(it->name);
        model->appendRow(item);
    }

XMs ★★★★★ ()
Ответ на: комментарий от XMs

Глянул код ещё раз, можно даже сделать лучше, избавившись от счётчика:

auto it = list_objects->constBegin();
while(it != list_objects->constEnd())
    {
        QStandardItem *item = new QStandardItem(it->name);
        model->appendRow(item);
        ++it;
    }

Уверен, если глянуть ещё шире, захватив во внимание не только эту функцию, то можно вообще много чего переделать, добавив стабильности, читаемости, скорости и предсказуемости. Дерзай

XMs ★★★★★ ()
Ответ на: комментарий от XMs

когда есть специальный метод clear().

Я думал, что только при создании объекта можно указать сколько будет данных.

ты обращаешься к индексу несуществующей ячейки.

Она существует, я же создал перед этим model, да и тем более мне от этого нужен был только index, данные уже заносятся как раз указав индекс, так просто QModelIndex не создать наверное.

А так спасибо что посмотрел код.

u0atgKIRznY5 ()
Ответ на: комментарий от XMs

Глянул код ещё раз, можно даже сделать лучше, избавившись от счётчика:

Ну да, еще не пробывал.

u0atgKIRznY5 ()
Ответ на: комментарий от XMs

но получил фигу, так как у тебя вообще нет проверки на то, какой версии Qt может быть в системе

А какие для этого должны быть файлы?

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

при создании объекта можно указать сколько будет данных

В данном случае это экономия на спичках, у тебя накладных расходов на удаление и создание объекта будет столько, что выигрыш от разового выделения памяти нивелируется.


Она существует, я же создал перед этим model

Да, не увидел, что ты задаёшь размер модели. Тебе разумнее будет просто очистить её (clear()), а потом делать appendRow(), как я показывал. Либо вообще вместо QStandardItemModel брать QStringListModel, у тебя всё равно данные списком идут и ничего, кроме текста, не содержат.


но получил фигу, так как у тебя вообще нет проверки на то, какой версии Qt может быть в системе

А какие для этого должны быть файлы?

Понятия не имею, я с QMake не работал. У меня в проектах везде CMake используется

XMs ★★★★★ ()

У меня программа виснет. Не могу понять из-за чего. Может кто чего дельного подскажет.

Она от тебя устала, и говорит тебе этим, горшочек не вари.
Брось и уйди, на C не пиши. Вообще не пиши, только если в ВК.
Хотя не, повесится ещё кто.
Просто не пиши, и к компу не подходи.

Ха, каптча: pastor 7800 :D

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.