Russian Qt Forum

Qt => Вопросы новичков => Тема начата: thechicho от Октябрь 12, 2011, 11:29



Название: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных)
Отправлено: thechicho от Октябрь 12, 2011, 11:29
подскажите, как можно добиться желаемого результата (на картинке).
1. задать разную ширину заголовкам. чего только я не пробовал...
получилось только установить одинаковую для всех длину...
а надо получить разную плавающую ширину для каждого столбца. т.е. изначально задаю размер для каждого столбца (наприм., 200, 50, 100) и после вставки контента, например, во 2ой столбик, его ширина сразу же должна подстраиваться под контент. увеличиваться, а ширина других, соответственно уменьшаться (ну или не обязательно чтобы уменьшалась - можно задать большой размер таблицы, главное чтобы полоса прокрутки не появлялась).
ща так:

Код
C++ (Qt)
model = new QStandardItemModel(0, 3, this);
 
ui->tableView->setSortingEnabled(true);
ui->tableView->sortByColumn(1, Qt::DescendingOrder);
 
//ui->tableView->horizontalHeader()->setStretchLastSection(true);
//ui->tableView->setMaximumWidth(500);
//ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
//ui->tableView->horizontalHeader()->setResizeMode(1, QHeaderView::Interactive);
//ui->tableView->horizontalHeader()->resizeSection(1, 250);
//ui->tableView->horizontalHeader()->setMaximumSize(50, 50);
 
//model->setHeaderData(0, Qt::Horizontal, QObject::tr("№"));
model->setHeaderData(0, Qt::Horizontal, QObject::tr("Номер"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("Баланс"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("Время парсинга"));
 
//model->setHorizontalHeaderLabels(QStringList() << "Номер" << "Баланс" << "Время парсинга");
 
ui->tableView->setModel(model);

строку добавляю:
Код
C++ (Qt)
       model->insertRow(iterationCount);
       model->setData(model->index(iterationCount, 0), phone);
 
       QColor color;
       if (balanse < 10) {
           color = Qt::red;
       } else if (balanse > 10 && balanse < 50) {
           color = Qt::darkRed;
       } else if (balanse > 50 && balanse < 100) {
           color = Qt::darkBlue;
       } else {
           color = Qt::darkGreen;
       }
       model->setData(model->index(iterationCount, 1), QColor(color), Qt::ForegroundRole);
 
       model->setData(model->index(iterationCount, 1), balanse);
       model->setData(model->index(iterationCount, 2), timeElapsed);

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 столбца.
Код
C++ (Qt)
ui->tableView->setSpan(iterationCount, 0, 1, 3);
model->insertRow(iterationCount);
model->setData(model->index(iterationCount, 0), timeAllStr);
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ой столбец был заданной длины и растягивался под контент, надо:
Код
C++ (Qt)
ui->tableView->horizontalHeader()->setMinimumSectionSize(1, 100);
ui->tableView->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents);
и все бы хорошо, но потом руками уже нельзя изменить размер! недоработка или фича, хз, но меня не устраивает.

короче, сделал так:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   QTextCodec *codec = QTextCodec::codecForName("UTF-8");
   QTextCodec::setCodecForCStrings(codec);
   QTextCodec::setCodecForTr(codec);
 
   model = new QStandardItemModel(0, 3, this);
 
//    model->setHeaderData(0, Qt::Horizontal, tr("Номер"));
//    model->setHeaderData(1, Qt::Horizontal, tr("Баланс"));
//    model->setHeaderData(2, Qt::Horizontal, tr("Время парсинга"));
   model->setHorizontalHeaderLabels(QStringList() << "Номер" << "Баланс" << "Время парсинга");
 
   //ui->tableView->setContextMenuPolicy(Qt::DefaultContextMenu);
   ui->tableView->setModel(model);
 
   ui->tableView->setSortingEnabled(true);
   ui->tableView->sortByColumn(1, Qt::DescendingOrder);
 
   ui->tableView->horizontalHeader()->resizeSection(0, 200);
   ui->tableView->horizontalHeader()->resizeSection(1, 100);
   ui->tableView->horizontalHeader()->setStretchLastSection(true);
}
 


Название: 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:
ЗАГОЛОВОЧНЫЙ
Код
C++ (Qt)
namespace Ui {
   class MainWindow;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
private:
   Ui::MainWindow *ui;
};

РЕАЛИЗАЦИЯ
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}
MainWindow::~MainWindow()
{
   delete ui;
   delete model;
}

тогда, чтобы подключить форму даилога, надо:
ЗАГОЛОВОЧНЫЙ
Код
C++ (Qt)
namespace Ui {
   class MainWindow;
   class Dialog;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
private:
   Ui::MainWindow *ui;
   Ui::Dialog *uid;
};

РЕАЛИЗАЦИЯ
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow), uid(new Ui::Dialog)
{
   ui->setupUi(this);
   uid->setupUi(this); // ?
}
MainWindow::~MainWindow()
{
   delete ui;
   delete uid;
   delete model;
}

ошибка:
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
Код
C++ (Qt)
#ifndef UI_PHONES_H
#define UI_PHONES_H
 
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QDialogButtonBox>
#include <QtGui/QHeaderView>
 
QT_BEGIN_NAMESPACE
 
class Ui_Dialog
{
public:
   QDialogButtonBox *buttonBox;
 
   void setupUi(QDialog *Dialog)
   {
       if (Dialog->objectName().isEmpty())
           Dialog->setObjectName(QString::fromUtf8("Dialog"));
       Dialog->resize(490, 362);
       buttonBox = new QDialogButtonBox(Dialog);
       buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
       buttonBox->setGeometry(QRect(350, 20, 81, 241));
       buttonBox->setOrientation(Qt::Vertical);
       buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
 
       retranslateUi(Dialog);
       QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept()));
       QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject()));
 
       QMetaObject::connectSlotsByName(Dialog);
   } // setupUi
 
   void retranslateUi(QDialog *Dialog)
   {
       Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
   } // retranslateUi
 
};
 
namespace Ui {
   class Dialog: public Ui_Dialog {};
} // namespace Ui
 
QT_END_NAMESPACE
 
#endif // 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
Код
C++ (Qt)
void MainWindow::on_pushButtonPhones_clicked()
{
   Ui::Dialog uiPhones;
   QDialog *phonesDialog = new QDialog;
   uiPhones.setupUi(phonesDialog);
   phonesDialog->show();
}

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


Название: 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
Код
C++ (Qt)
void MainWindow::on_pushButtonPhones_clicked()
{
   Ui::Dialog uiPhones;
   QDialog *phonesDialog = new QDialog(this);
   uiPhones.setupUi(phonesDialog);
   phonesDialog->exec();
 
   delete phonesDialog;
}

так правильно?
из памяти удаляется после закрытия.

// лучше б читал по 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 в конструкторе и "ленивое" создание:
Код
C++ (Qt)
void showDialog()
{
   if (!dialog)
   {
       dialog = new QDialog(this);
   }
   ...
}


Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных)
Отправлено: thechicho от Октябрь 14, 2011, 10:12
ясно, спс :)


Название: Re: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных)
Отправлено: Bepec от Октябрь 14, 2011, 12:26
to thechicho:

Просто если ты невежлив с другими и, грубо говоря, требуешь решить все за тебя, а ты "не будешь мозги забивать дурью". То и помогать тебе не захочется человеку, даже если он и знает.

Это не относится к мастерам своего дела, как то Пантер и прочие (тут длинный список имен).

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

Если ты хочешь изучить Qt  - без знания основ ты ничто. Если отобрать у тебя форум, то ты не будешь из себя ничего представлять :)

Именно поэтому многие и отказывают тебе в помощи - чтобы ты развивался, а не превратился в амебу безвольную.