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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенос данных из ComboBox на след. страничку  (Прочитано 3358 раз)
TheOne*
Гость
« : Сентябрь 21, 2011, 14:36 »

Ребята, помогите пожалуйста разобраться. Диплом в универе задали в Qt С++ писать, на сварочном факультете...Я научился пока что делать переход из одной формы в другую Смеющийся А у меня к вам вопрос такой, во второй форме будут формулы которые будут использовать данные, которые лежат в ComboBox в первой форме. Каким образом мне привязать эти значения к формулам во второй форме?Непонимающий
Спасайте, буду вам благодарен!!!
Записан
Fess
Гость
« Ответ #1 : Сентябрь 21, 2011, 16:51 »

форма с данными
dataform.h
Код:
class DataForm : public QDialog {
...
public:
   double param();
public slots:
   void showActionForm();
...
};
dataform.cpp
Код:
#include "dataform.h"
#include "actionform.h"
...
double DataForm::param() {
   return ui->comboBox->currentText()->toDouble();
}

void DataForm::showActionForm() {
   ActionForm actionForm(this);
   actionForm.exec();
}
...
форма с формулами
actionform.h
Код:
#include "dataform.h"

class ActionForm : public QDialog {
...
protected:
   DataForm* mpDataForm;
...
public:
   ActionForm(DataForm* pDataForm);
public slots:
   void DoSomethingAnything();
...
};
actionform.cpp
Код:
#include "actionform.h"
#include "dataform.h"

...
ActionForm::ActionForm(DataForm* pDataForm)
   : QDialog(pDataForm)
   , mpDataForm(pDataForm)
{
}

void ActionForm::DoSomethingAnything() {
   double param = mpDataForm->param();
   //have some fun with data ;)
}
...
Записан
Даниил
Гость
« Ответ #2 : Сентябрь 22, 2011, 10:00 »

Диплом в универе задали в Qt С++ писать, на сварочном факультете...
Смеющийся Упал под стол ...
Записан
Pretorean
Гость
« Ответ #3 : Сентябрь 22, 2011, 12:42 »

Диплом в универе задали в Qt С++ писать, на сварочном факультете...
Смеющийся Упал под стол ...
ну а чо, я тоже сварку заканчивал
Записан
Yuriy
Гость
« Ответ #4 : Сентябрь 22, 2011, 18:13 »

А я заканчивал электрооборудование судов, но к делу это не относится.
Обычно для хранения большого кол-ва данных я использую статические функции в отдельном классе, не привязанные ни к одной форме:

Класс values / values.h:
Код:
#ifndef VALUES_H
#define VALUES_H

//Здесь создаю структуры, доступные также для других классов, например
//Описание категорий материалов
typedef struct _MaterialCategory MaterialCategory;

struct _MaterialCategory{
  int       number;
  QString   name;
} ;

//Далее описание самого класса
class values
{

public:

    static int                          getMoveMode();
    static bool                        getLimitMode();
    static bool                        getAntialiasMode();
    static bool                        getConturLineMode();
    static QString                    getBinDir();

    static void                        setMoveMode(const int &aMode);
    static void                        setLimitMode(const bool &aLimit);
    static void                        setAntialiasMode(const bool &aAlias);
    static void                        setConturLineMode(const bool &aLineMode);
    static void                        setBinDir(const QString &aBindDir);

};

#endif // VALUES_H

В файле values.cpp:

Код:
#include "values.h"
static int                          MoveMode = 1;
static bool                         LimitMode = true;
static QString                      myBinDir;
static QString                      ModelPath;
static QHash<QString,QString>       DBVarValues;
static QQueue<QString>              VarValues;
static QString                      TextureDir;
static QString                      TmpPath;
static QString                      last_command;   //Последняя команда
static QString                      LastCoordinate; //Это последние введенные координаты
static QString                      LastMacrosDir;  //Директория для загрузки макросов
static int                          myViewMode = 0;
static int                          myTransparency = 0;

//и т.д.

//методы get
int values::getMoveMode()
{
    return MoveMode;
}

bool values::getLimitMode()
{
    return LimitMode;
}

bool values::getAntialiasMode()
{
    return myAntialising;
}

bool values::getConturLineMode()
{
    return myConturDisplay;
}

//методы set

void values::setAntialising(const bool &aCurrent)
{
    myAntialising = aCurrent;
}

void values::setConturDisplay(const bool &aCurrent)
{
    myConturDisplay = aCurrent;
}

void values::setViewMode(const int &aViewMode)
{
    myViewMode = aViewMode;
}

//и т.д.


Для использования такого класса достаточно вызвать в любом классе values::getMode() или values::setMode(0);

На практике такие статические классы очень скоростные для хранения данных.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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