Название: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 11:29 подскажите, как можно добиться желаемого результата (на картинке).
1. задать разную ширину заголовкам. чего только я не пробовал... получилось только установить одинаковую для всех длину... а надо получить разную плавающую ширину для каждого столбца. т.е. изначально задаю размер для каждого столбца (наприм., 200, 50, 100) и после вставки контента, например, во 2ой столбик, его ширина сразу же должна подстраиваться под контент. увеличиваться, а ширина других, соответственно уменьшаться (ну или не обязательно чтобы уменьшалась - можно задать большой размер таблицы, главное чтобы полоса прокрутки не появлялась). ща так: Код
строку добавляю: Код
1.1. как добавить строку с объединенными столбцами; 2. убрать подсветку и треугольничеГ; 3. ручная выборка телефонов, для которых надо получить баланс. новое окно, кнопки добавить, удалить. телефоны и чекбоксы. чекбокс "Отметить/Снять все". после закрытия программы, чекбоксы должны оставаться на своих местах. для этого придется записывать состояние в файл? какой тип файла лучше использовать? ща у меня список телефонов в .txt для этих целей лучше, наверн, создать файл ресурсов (как я понял, это файл, кот. встраивается в .exe), т.к. он много не будет весить. или использовать базу данных? вот как-то так. буду благодарен любой подсказке. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 12, 2011, 13:52 1.1 QTableView::setSpan()
2. headerView->setClickable(false) 3. использовать model-view, хотя думаю можно и схалтурить через QFormLayout; сохранять состояние можно, скажем, в БД или QSettings. БД целесообразно использовать если списки будут достаточно большими. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 14:44 //1.1 QTableView::setSpan()
так попробовал, не получилось. все равно 3 столбца. Код iterationCount - номер строки 0 - с нулевого столбца? 1 - одна строка? 3 - слить 3 столбца в один? где ошибка? // headerView->setClickable(false) тогда же сортировка работать не будет? я просто хотел, чтобы сортировало без выделения и треугольника. // 3. использовать model-view, хотя думаю можно и схалтурить через QFormLayout; сохранять состояние можно, скажем, в БД или QSettings. БД целесообразно использовать если списки будут достаточно большими. QSettings, т.е. прямо в .exe будут как-то сохраняться. спс :) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 12, 2011, 18:03 //1.1 QTableView::setSpan() поменяй местами первую и вторую строкутак попробовал, не получилось. все равно 3 столбца. // headerView->setClickable(false) да, не будеттогда же сортировка работать не будет? я просто хотел, чтобы сортировало без выделения и треугольника. QSettings, т.е. прямо в .exe будут как-то сохраняться. спс :) QSettings сохраняет в систему хранения настроек (например в винде это реестр). приложение, модифицирующее само себя, обычно является вирусом :)Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 18:10 // поменяй местами первую и вторую строку
блин :D // QSettings сохраняет в систему хранения настроек (например в винде это реестр) спс, не знал :) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 12, 2011, 18:21 почитал бы про этот класс - знал бы
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 18:25 да там этих классов, как ... в общем, знал бы что такой есть, не спрашивал бы!)
вот ты б лучше по 1 пункту подсказал ;) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 12, 2011, 18:36 смотреть документацию даже по используемым тобой классам вообще не хочешь (или это просто такая нелюбовь к поганому буржуйскому языку?). QTableView::resizeColumnToContents()
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 19:09 я ж грю, пробовал пробовал, да не вышло.
это или что-то подобное пробовал. получалось, чтобы столбец расширялся по содержимому. но я то спросил :) // задать разную ширину заголовкам на кроссплатформерском форуме находил похожую тему, там так решение и не нашли. // поганому буржуйскому языку :D неправильно там меня поняли. я ж не говорил, что он поганный и тп. я говорил, что нам "свое производство" поднимать надо, пАнимаешь :D вот ща давай, скажи как задать нужную ширину для заголовков ;) в документацию то все посылать умеют :P хотя там полюбому есть решение, ток я не нашел ::) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 12, 2011, 19:22 QTableView::resizeColumnToContents() если это не то, тогда не знаю. не ну можно конечно еще руками высчитывать длины всех ячеек в пикселях, брать максимальную и задавать ширину столбцу.Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 12, 2011, 19:46 лан, завтра добью.
сенкс за помощь :) особенно за это :D /* //1.1 QTableView::setSpan() так попробовал, не получилось. все равно 3 столбца. */ поменяй местами первую и вторую строку :D :D :D вот бы все проблемы так решать))) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 14:02 с 1 пунктом разобрался, но плавающую ширину не стал делать, т.к. руками потом нельзя менять и QHeaderView::ResizeToContents устанавливает минимальную ширину столбцу.
т.е. чтобы 2ой столбец был заданной длины и растягивался под контент, надо: Код и все бы хорошо, но потом руками уже нельзя изменить размер! недоработка или фича, хз, но меня не устраивает. короче, сделал так: Код
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 14:07 насчет 3
я нарисовал в дизайнере форму для телефонов. у меня уже есть основная форма, как мне дополнительную форму к ней подключить? в смысле форму я подключу #include "ui_phones.h" но как потом с ней работать?.. киньте ссылку плиз, где почитать можно как подлючать еще одну форму. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: Bepec от Октябрь 13, 2011, 15:27 http://doc.trolltech.com/main-snapshot/
Мда, наглый хам, покрывающий все, неумеющий разговаривать использует форум как средство помощи... Что из этого... этой программы получится?! Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 15:28 тебе б книжку по Qt почитать, да и по С++ тоже не помешало б. ну и примерчики посмотреть, которые обычно устанавливаются вместе с Qt.
форма - это ж класс. как классы-то подключать знаешь? :) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 17:14 // Мда, наглый хам, покрывающий все, неумеющий разговаривать
не умеющий задницу лизать, дальше воздержусь от комментариев ;D // использует форум как средство помощи а для чего еще раздел для новичков использовать, ололо? // Что из этого... этой программы получится?! да уже получилось, прога делать то, что требуется от нее. ща просто улучшаю функционал и внешний вид. и думаю как прикрутить многопоточность. себя вспомни когда только начинал, кодить. вместо того чтобы пальцы гнуть, подсказал конкретно бы. чтобы настроить внешний вид, надо http://doc.trolltech.com/main-snapshot/ все изучить? я иду по пути наименьшего сопротивления - зачем знать то, что не понадобится. // тебе б книжку по Qt почитать, да и по С++ тоже не помешало б. ну и примерчики посмотреть, которые обычно устанавливаются вместе с Qt. дак итак читаю временами, когда в тупик попадаю. по с++ есть pdf'ка Либерти, да чот там страниц больше 1к... почитаю как-нибудь :D насчет примерчиков, я ж элементарные вещи спрашиваю. смысл "изобретать велосипед", если можно спросить у человека, кот. сталкивался с подобной проблемой, как ее решить. // форма - это ж класс. как классы-то подключать знаешь? :D ну я подключал один. сначала в заголовочном добавил указатель. потом в реализации - указатель = new Class, написал и дальше работал с этим указателем. а форму... в общем MainWindow: ЗАГОЛОВОЧНЫЙ Код
РЕАЛИЗАЦИЯ Код
тогда, чтобы подключить форму даилога, надо: ЗАГОЛОВОЧНЫЙ Код
РЕАЛИЗАЦИЯ Код
ошибка: mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)': mainwindow.cpp:30: error: no matching function for call to 'Ui::Dialog::setupUi(MainWindow* const)' ui_phones.h:28: note: candidates are: void Ui_Dialog::setupUi(QDialog*) как правильно то надо подключить форму, если там setupUi? вот ui_phones.h Код
и чо мне теперь 1к страниц про с++ прочитать надо, чтобы понять как ее подключить? :'( или весь мануал по кьюти, да, Верес? :D я все равно разберусь как сделать, но благодаря форуму можно упростить друг другу жизнь, ускорить решение проблемы, подсказывая как решить проблему, из-за которой сам в свое время потерял время. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: Igors от Октябрь 13, 2011, 17:19 http://doc.trolltech.com/main-snapshot/ Ну почему "неумеющий" - очень даже "умеющий", вот только с др. стороны :) Мда, наглый хам, покрывающий все, неумеющий разговаривать использует форум как средство помощи... Что из этого... этой программы получится?! "ЧуваК" откровенно жадный и не брезгует ничем чтобы получить "на халяву" - ну так флаг ему в руки, Вас никто не заставляет делиться с ним своими знаниями/опытом. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 17:31 насчет примерчиков, я ж элементарные вещи спрашиваю. смысл "изобретать велосипед", если можно спросить у человека, кот. сталкивался с подобной проблемой, как ее решить. вот в примерчиках (а они ведь даже по разделам отсортированы!) как раз элементарные вещи и можно подсмотреть, а не лезть сразу на форумНазвание: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 17:44 слушайте, зачем на форумах раздел для новичков?
не для того, чтобы помогать за спасибо? нет? а для чего? если знаешь, неужели сложно подсказать? чо за дибильная логика, типа я неделю это учил, а ты ска хочешь, чтобы я тебе теперь просто так все на блюдечке выложил? нет, ска сиди тоже и учи неделю, как я. я тащусь от таких людей просто. у меня в группе тоже один такой был. дай списать? - не дам. дай телефон со шпорами? - не дам. ну и правильно, что его все пи****м звали. помогать надо безвозмездно. если вам религия жидовская не позволяет это делать, то вас же никто не заставляет. я бы тоже с удовольствием помог, если бы разбирался хорошо в теме. я нуб, которому нужна помощь. я же бл, не прошу, чтобы вы за меня искали или писали что-то. вопросы то элементарные. наверняка кто-то сталкивался с подобным. мне чтобы найти ответ, надо потратить кучу времени, а вам просто подсказать. и где и кого я оскорбил ??? Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 17:48 дак долго это все. я надеялся, что благодаря форуму, можно сократить время на поиски. я просто не представляю какой примерчик смотреть.
ладно, сенкс за помощь :) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 18:37 Код
показывает форму. будут проблемы с паматью? если да, то как правильно удалять диалог. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 18:45 прочитай первые несколько глав в книге Бланшетт (дела на полчаса-час максимум) раз так сложно просмотреть примеры - там прекрасно описано как управляться с формами. подход "раз я сразу наугад не знаю, то пойду на форуме спрошу" - неправильный, как по мне.
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 19:03 дак я читаю ща http://www.opennet.ru/docs/RUS/qt3_prog/x604.html
не нашел ничего про управлению памятью еще, вот и спросил. а подход - время сократить на поиск решения проблемы. я все равно сделаю, ток с вашей помощью быстрее. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 19:07 лучше б читал по Qt4, а не по Qt3 :)
управление памятью - родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально), в остальном - все точно так же, как и обычно в С++ Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 19:56 Код
так правильно? из памяти удаляется после закрытия. // лучше б читал по Qt4, а не по Qt3 а там разницы нет практически, чтобы общий смысл уловить. а он мне и нужен :) // управление памятью - родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально), в остальном - все точно так же, как и обычно в С++ про родителя я тоже видел. но применительно к моему примеру, где родитель я не пойму... т.е. хочешь сказать, что когда прогу закрою из памяти все удалится? но я тот вариант тестил, после открытия в очередной раз диалога, он добавлялся в память без удаления. а вот то что ща написал, из памяти сразу удаляет. так правильно? мне кажется, что применительно к кьюти, надо делать как-то по-другому. я с с++ не особо еще подружился ::) :D Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 20:10 setupUi вызывают в классе-наследнике. раз просмотр названий разделов примеров вызывает такие трудности, то вот где посмотреть как создаются кастомные диалоги: QtSDK/Examples/4.7/dialogs (у тебя путь может слегка отличаться). другой вариант - создать через креатор класс формы и посмотреть что и как там написано.
у тебя в примере родитель - this (надо читать параметры конструкторов да и методов вообще). удалять руками phonesDialog не нужно. раз не подружился, то самое время заняться этим, тем более что книга, пусть и большая, у тебя есть. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: iroln от Октябрь 13, 2011, 20:22 Цитировать я с с++ не особо еще подружился Пиши на Python+PyQt4 (PySide). Для твоей программы совершенно без разницы, а времени кучу сэкономишь, так как на Python писать просто и приятно даже имея о нём поверхностные знания, чего не скажешь про C++. :)Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 20:45 спс :)
ток я не понимаю, если не удалять руками, он в памяти остается. т.е. 100500 раз открыть/закрыть и приложение всю память схавает. на Qt хочу научиться писать. месяц где-то его мучаю уже. а всего с++ месяца два наверн. Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 20:55 родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально) Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 13, 2011, 22:10 имеется в виду после закрытия программы?
а я имею в виду во время работы проги. нажимаю телефоны, открывается диалог, хавает память. закрываю диалог, он из памяти не удаляется. если опять открыть, то прога еще больше будет памяти жрать. и т.д. а если написать delete phonesDialog; , тогда после закрытия диалога, он из памяти удаляется сразу. я в этом особо не шарю, но мне кажется если не удалять, то это утечка памяти получается? Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: kambala от Октябрь 13, 2011, 22:24 ну в некотором смысле да, утечка тут есть - если 234454434 раз открыть диалог, то память может кончиться, но при завершении приложения эта "утечка" будет устранена. вообще, модальные диалоги часто создают не через указатели, а напрямую (память так выделяется в стеке, а не в куче) - это избавляет от удаления его ручками, т.к. по выходе из области видимости память будет освобождена автоматически.
другие варианты избегания этой утечки - dialog->setAttribute(Qt::WA_DeleteOnClose) (что это дает видно из названия); запихивание переменной диалога в поля класса, присваивание ему 0 в конструкторе и "ленивое" создание: Код
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: thechicho от Октябрь 14, 2011, 10:12 ясно, спс :)
Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных) Отправлено: Bepec от Октябрь 14, 2011, 12:26 to thechicho:
Просто если ты невежлив с другими и, грубо говоря, требуешь решить все за тебя, а ты "не будешь мозги забивать дурью". То и помогать тебе не захочется человеку, даже если он и знает. Это не относится к мастерам своего дела, как то Пантер и прочие (тут длинный список имен). Сначала бы писать на форумах научился правильно, и без мата, и книжки читать. Если ты хочешь изучить Qt - без знания основ ты ничто. Если отобрать у тебя форум, то ты не будешь из себя ничего представлять :) Именно поэтому многие и отказывают тебе в помощи - чтобы ты развивался, а не превратился в амебу безвольную. |