Russian Qt Forum
Ноябрь 23, 2024, 22:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Как такое сделать (новое окно, чекбоксы, кнопки, сохранение данных)  (Прочитано 16891 раз)
thechicho
Гость
« Ответ #15 : Октябрь 13, 2011, 17:14 »

// Мда, наглый хам, покрывающий все, неумеющий разговаривать
не умеющий задницу лизать, дальше воздержусь от комментариев Смеющийся

// использует форум как средство помощи
а для чего еще раздел для новичков использовать, ололо?

// Что из этого... этой программы получится?!
да уже получилось, прога делать то, что требуется от нее. ща просто улучшаю функционал и внешний вид. и думаю как прикрутить многопоточность.
себя вспомни когда только начинал, кодить. вместо того чтобы пальцы гнуть, подсказал конкретно бы.
чтобы настроить внешний вид, надо http://doc.trolltech.com/main-snapshot/ все изучить?
я иду по пути наименьшего сопротивления - зачем знать то, что не понадобится.

// тебе б книжку по Qt почитать, да и по С++ тоже не помешало б. ну и примерчики посмотреть, которые обычно устанавливаются вместе с Qt.
дак итак читаю временами, когда в тупик попадаю. по с++ есть pdf'ка Либерти, да чот там страниц больше 1к... почитаю как-нибудь Веселый
насчет примерчиков, я ж элементарные вещи спрашиваю. смысл "изобретать велосипед", если можно спросить у человека, кот. сталкивался с подобной проблемой, как ее решить.

// форма - это ж класс. как классы-то подключать знаешь?
 Веселый
ну я подключал один. сначала в заголовочном добавил указатель. потом в реализации - указатель = 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к страниц про с++ прочитать надо, чтобы понять как ее подключить? Плачущий
или весь мануал по кьюти, да, Верес? Веселый
я все равно разберусь как сделать, но благодаря форуму можно упростить друг другу жизнь, ускорить решение проблемы, подсказывая как решить проблему, из-за которой сам в свое время потерял время.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Октябрь 13, 2011, 17:19 »

http://doc.trolltech.com/main-snapshot/

Мда, наглый хам, покрывающий все, неумеющий разговаривать использует форум как средство помощи... Что из этого... этой программы получится?!
Ну почему "неумеющий" - очень даже "умеющий", вот только с др. стороны  Улыбающийся
"ЧуваК" откровенно жадный и не брезгует ничем чтобы получить "на халяву" - ну так флаг ему в руки, Вас никто не заставляет делиться с ним своими знаниями/опытом.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Октябрь 13, 2011, 17:31 »

насчет примерчиков, я ж элементарные вещи спрашиваю. смысл "изобретать велосипед", если можно спросить у человека, кот. сталкивался с подобной проблемой, как ее решить.
вот в примерчиках (а они ведь даже по разделам отсортированы!) как раз элементарные вещи и можно подсмотреть, а не лезть сразу на форум
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
thechicho
Гость
« Ответ #18 : Октябрь 13, 2011, 17:44 »

слушайте, зачем на форумах раздел для новичков?
не для того, чтобы помогать за спасибо?
нет? а для чего? если знаешь, неужели сложно подсказать?
чо за дибильная логика, типа я неделю это учил, а ты ска хочешь, чтобы я тебе теперь просто так все на блюдечке выложил? нет, ска сиди тоже и учи неделю, как я.
я тащусь от таких людей просто. у меня в группе тоже один такой был. дай списать? - не дам. дай телефон со шпорами? - не дам. ну и правильно, что его все пи****м звали. помогать надо безвозмездно. если вам религия жидовская не позволяет это делать, то вас же никто не заставляет. я бы тоже с удовольствием помог, если бы разбирался хорошо в теме. я нуб, которому нужна помощь. я же бл, не прошу, чтобы вы за меня искали или писали что-то. вопросы то элементарные. наверняка кто-то сталкивался с подобным. мне чтобы найти ответ, надо потратить кучу времени, а вам просто подсказать.
и где и кого я оскорбил  Непонимающий
« Последнее редактирование: Октябрь 13, 2011, 17:51 от thechicho » Записан
thechicho
Гость
« Ответ #19 : Октябрь 13, 2011, 17:48 »

дак долго это все. я надеялся, что благодаря форуму, можно сократить время на поиски. я просто не представляю какой примерчик смотреть.
ладно, сенкс за помощь Улыбающийся
Записан
thechicho
Гость
« Ответ #20 : Октябрь 13, 2011, 18:37 »

Код
C++ (Qt)
void MainWindow::on_pushButtonPhones_clicked()
{
   Ui::Dialog uiPhones;
   QDialog *phonesDialog = new QDialog;
   uiPhones.setupUi(phonesDialog);
   phonesDialog->show();
}

показывает форму. будут проблемы с паматью? если да, то как правильно удалять диалог.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #21 : Октябрь 13, 2011, 18:45 »

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
thechicho
Гость
« Ответ #22 : Октябрь 13, 2011, 19:03 »

дак я читаю ща http://www.opennet.ru/docs/RUS/qt3_prog/x604.html
не нашел ничего про управлению памятью еще, вот и спросил.
а подход - время сократить на поиск решения проблемы. я все равно сделаю, ток с вашей помощью быстрее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #23 : Октябрь 13, 2011, 19:07 »

лучше б читал по Qt4, а не по Qt3 Улыбающийся

управление памятью - родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально), в остальном - все точно так же, как и обычно в С++
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
thechicho
Гость
« Ответ #24 : Октябрь 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
а там разницы нет практически, чтобы общий смысл уловить. а он мне и нужен Улыбающийся

// управление памятью - родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально), в остальном - все точно так же, как и обычно в С++

про родителя я тоже видел. но применительно к моему примеру, где родитель я не пойму... т.е. хочешь сказать, что когда прогу закрою из памяти все удалится? но я тот вариант тестил, после открытия в очередной раз диалога, он добавлялся в память без удаления.
а вот то что ща написал, из памяти сразу удаляет. так правильно? мне кажется, что применительно к кьюти, надо делать как-то по-другому.
я с с++ не особо еще подружился Строит глазки Веселый
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #25 : Октябрь 13, 2011, 20:10 »

setupUi вызывают в классе-наследнике. раз просмотр названий разделов примеров вызывает такие трудности, то вот где посмотреть как создаются кастомные диалоги: QtSDK/Examples/4.7/dialogs (у тебя путь может слегка отличаться). другой вариант - создать через креатор класс формы и посмотреть что и как там написано.

у тебя в примере родитель - this (надо читать параметры конструкторов да и методов вообще). удалять руками phonesDialog не нужно.

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
iroln
Гость
« Ответ #26 : Октябрь 13, 2011, 20:22 »

Цитировать
я с с++ не особо еще подружился
Пиши на Python+PyQt4 (PySide). Для твоей программы совершенно без разницы, а времени кучу сэкономишь, так как на Python писать просто и приятно даже имея о нём поверхностные знания, чего не скажешь про C++. Улыбающийся
Записан
thechicho
Гость
« Ответ #27 : Октябрь 13, 2011, 20:45 »

спс Улыбающийся
ток я не понимаю, если не удалять руками, он в памяти остается. т.е. 100500 раз открыть/закрыть и приложение всю память схавает.

на Qt хочу научиться писать. месяц где-то его мучаю уже. а всего с++ месяца два наверн.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #28 : Октябрь 13, 2011, 20:55 »

родитель уничтожает всех своих детей сам (если в документации ничего не оговорено специально)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
thechicho
Гость
« Ответ #29 : Октябрь 13, 2011, 22:10 »

имеется в виду после закрытия программы?
а я имею в виду во время работы проги. нажимаю телефоны, открывается диалог, хавает память. закрываю диалог, он из памяти не удаляется. если опять открыть, то прога еще больше будет памяти жрать. и т.д.
а если написать delete phonesDialog; , тогда после закрытия диалога, он из памяти удаляется сразу.
я в этом особо не шарю, но мне кажется если не удалять, то это утечка памяти получается?
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.175 секунд. Запросов: 23.