LINUX.ORG.RU
Ответ на: комментарий от Gorthauer

чем удобен VCL - тем что к свюйству какого либо «виджета» есть прямой доступ, например TextBox->Text можно и присвоить значение и считать. И все в этом духе, этот подход мне очень нравится.

Безнадежно... ну неужели ты не читал литературу и множество обоснований на тему почему ТАК НЕЛЬЗЯ ДЕЛАТЬ?

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

Gtk::Button button(«Hello World»);
button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));

вот это я понимаю.. уж поудобней чем в куте

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

Мы не о том говорим. Gorthauer подумал что это поле. Тоесть фактически меняются данные обьекта, а он о этом не знает.

Но это свойство - обьект знает что что-то меняют и предпринимает еще нужные действия

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

> Удобно что в все в одной IDE, это да.

Ой, как это носится к xCode и obj-c не понял. Но то, что том, сложно перенести на С. А слоты/сигналы qt как раз и есть попытка перенести динамическую типизацию

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

> Я так понял что говорили о QtCreator. Ладно, может не поняли друг друга

Я просто говорил, как это сделано у тех, кто начала делать одним из первых визуальное программирование. GUI получилось у них фактически как побочный продукт

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

интуитивно понятней чем у Qt У виджета есть функция возвр сигнал, в свою очередь у которого есть метод присваивания ему слота. Мне этот подход больше нравится, Это мое ИМХО, но у ГТКшников видимо нет такой хорошей IDE как у Qt

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

разница в том что визуально код становится уродливее, и для извлечения данных используется совсем другая функция возвр QString ui->lineEdit1->text()

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

Если тебе надо будет получить сигнал потомка, имея указатель родителя, то тебе придется знать и типа потомка, чтоб получить сигнал в gtk

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

ну естественно ... Это все делается перед показом формы так что что то там перепутать не реально, так же как и в Qt У нас ветка форума должна переименоваться Qt vs GTKmm :-D

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

но ведь не факт что виджет имеет этот сигнал/слот, какая тогда разница.

Есть ли в Qt методы оптимизации памяти какие нибудь? А то меня убило QTableWidget табличка 15000x5 пожрала 60 метров оперативы, хотя если посчитать даже по 100 байт на 1 item, то выйдет всего 7.5 мб

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

Особенно слоты и сигналы, которые добавляются препроцессором )

а так же космическая иерархия, централизованная чистка памяти и метаинформация. ближе не бывает, ага

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

Но ведь согласитесь что билдер очень удобная среда для написания гуи...

по сравнению с нормальными средствами вроде Tcl/Tk - экскременты, а не среда

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

У вас наверно все в отладчной версии было. QTableWidget очень эффективно использует память, не тратит на пустые ячейки и тд

Да, не факт, что имеет - но это уже другая проблема

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

ВЫ имеете ввиду что я должен был компилировать с параметром release? пробовал использует так же много памяти

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

> а так же космическая иерархия

иерархия как раз там хорошая

централизованная чистка памяти

не совсем верно. не централизованная

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

> ВЫ имеете ввиду что я должен был компилировать с параметром release? пробовал использует так же много памяти

А вы что пихаете в такую таблицу? Модель какая?

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

иерархия как раз там хорошая

а я её где-то называл плохой?

не совсем верно. не централизованная

для виджетов - централизованная

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

стандартная модель, про другие читал.. они не подходят.. я извлекаю данные из dbf и поячеечно помещаю в таблицу

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

вполне ожидаемая реакция - больше то сказать нечего

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

> типичный идиот в комментариях. привет, идиот!

как гуи он страшен. Программировать не пробовал

для виджетов - централизованная

а что тогда происходит, когда я пишу delete a_widget?

стандартная модель, про другие читал.. они не подходят.. я извлекаю данные из dbf и поячеечно помещаю в таблицу

Особо не пробовал, за памятью не смотрел. А версия qt какая?

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

а че.. мне понравилось, вот бы его к c++ прикрутить, я читал там есть графические моды для красивых кнопочек и т.д.

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

Подскажи есть tk для c++ обертка? Простота синтаксиса понравилась

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

ну чтож, давайте подумаем.

15000x5 = и того 75 к элементов.

Отрисовка происходит по запросу, лишнии траты на гуюню незначительны. Теперь надо понять, что храниться в элементах. Возможно, это строки длиной по 5 букв. Тогда на строку каждую скорей всего убъется по 32 байта (буфер) и еще 8 байт на 6 где-то (длина, кокие-то кэши и тд). И того получем уже 80 байт. Завернем это все в Qvariant - еще как минимум 8 байт на хранение указателья + еще байт 16 на специфичные нужды. Уже почти сотня.

Далее, если ты заплняешь каждый итем, то он так же хранит, что ты не заполнил другие роли ячейки (их около 7) - пустые вариант по 24 байта (хотя вариант на самом деле думаю больше занимает). И того еще 150 байт.

Потом добавим информацию на то, чтоб хранить идентификацию ячеек (а ты наврено пользоваться QStandartItem). Это еще минимум 2 инта, еще адрессация в массиве и тд.

Вот. Наберем как минимум пол кб на каждый элемент

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

>Далее, если ты заплняешь каждый итем, то он так же хранит, что ты не заполнил другие роли ячейки (их около 7) - пустые вариант по 24 байта (хотя вариант на самом деле думаю больше занимает). И того еще 150 байт.
как же лучше тогда сделать?

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

Если не нужно оформление, то сабклами стандартную абстрактную модель - в нее не заложено хранение всякой фигни (по моему и стандартная модель тоже не хранит пустые куски, можно попробовать сабкласить ее).

Но не пользоваться изменениями данных модели. перекрыть QAbstractItemModel::data, и не пользоваться setData и другими методами из оригинальной модели. Модель данных использоваться свою.

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

> как же лучше тогда сделать?

QTableView + своя модель.

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

Ну в том то и проблема, что QQTAbleWidget хотя и простой, но очень тупой widget в плане оптимизации: он может много, но за это надо платить

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

И вообще, если у тебя много повторящихся данных в таблице (одинаковые строки) - то тебя спасет хэш строк

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

> нет одинаковых данных совсем

Тогда память тратиться все равно. Делать легковесную модель, лучше сделать потомка абстрактной модели: она чистая и удобная для этого, и не нагруженная лишними данными. В этом случае вы вполне можете уложиться в строки + структура массива.

это сарказм или правда?

Вообще-то он работает вроде везде. Везде одинаково уродливо. Но идеи в языке хорошие...

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

Ладно. Я дома уже и мне лень возиться с этими таблицами, завтра покопаюсь =) просто цель проекта.. ставить на слабые машины с 128 ОЗУ в иксах под xfce4. При пустой таблице прога жрет 27 мб. при заполненной 68-80

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