crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

7 страниц V  < 1 2 3 4 > »   
Ответить в данную темуНачать новую тему
> Передача данных от одной формы другой
Litkevich Yuriy
  опции профиля:
сообщение 22.3.2010, 1:39
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Вопрос:
1) Диалоговое окно модальное?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vexar
  опции профиля:
сообщение 22.3.2010, 1:57
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 28.11.2008
Пользователь №: 438

Спасибо сказали: 0 раз(а)




Репутация:   0  


Диалоговое окно, но лучше наверно сделать модальное.

mainwindow.cpp

void MainWindow::LoginSys()
{
    if (!EnterDialog)
    {
         EnterDialog = new LoginSysDialog(this);
    }

    EnterDialog->show();
    EnterDialog->activateWindow();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.3.2010, 10:38
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


обычно данные из диалоговых окон передаются в главное, по закрытию диалогового окна.
Для этого в диалоговом окне предусматривают методы чтения данных.
Например, для чтения текста из LoginSysDialog::LineEditName, можно написать метод LoginSysDialog::name, тогда в главном окне после закрытия диалога просто вызываешь этот метод.
Вот у меня диалог ввода имени пользователя и пароля:
class DialogLogin : public QDialog, public Ui::DialogLogin
{
    Q_OBJECT
public:
    DialogLogin(QWidget* parent= 0);
    
    QString    login() const;
    QString    password() const;
};
Вот так используется в главном окне:
DialogLogin    loginDialog(this);

if (loginDialog.exec() == QDialog::Accepted)
{
    login=loginDialog.login();
    pswd=loginDialog.password();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 8.4.2010, 19:04
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, я своём приложении мне необходимо сделать следующее: при запуске появляется окно где пользоветль вводит логин и пароль, после успешной авторизации появляется основное(главное) окно программы.
Я делаю следующее:
1. в Qt Creator создаю GUI приложение
2. добавляю в него новую форму и добавляю соответствующие этой форме файлы .h и .cpp
3. в файл .h добавляю следующее:
#ifndef DIALOG_LOGIN_H
#define DIALOG_LOGIN_H
#include <QDialog>

namespace Li {
    class MyForm;
}

class MyWidget: public QDialog
{
    Q_OBJECT
public:
    MyWidget(QDialog *parent = 0);
    ~MyWidget();

private:
    Li::MyWidget *li;
};
#endif // DIALOG_LOGIN_H

4. в файл .cpp добавляю
#include "dialog_login.h"
#include "ui_dialog_login.h"

MyWidget::MyWidget(QDialog *parent)
    :QDialog(parent), li(new Li::MyForm())
{
    li->setupUi(this);
}

MyWidget::~MyWidget()
{
    delete li;
}

Но даже на этом шаге компиляция рушиться с ошибками. Подскажите пожалуйста, на каком шаге делаю что-то не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.4.2010, 19:14
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


А почему неймспейс называется Li::? По-умолчанию uic вроде генерирует Ui::
namespace Li {
    class MyForm;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 8.4.2010, 19:20
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да, это исправил заменил на Ui, но это не помогло.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.4.2010, 19:28
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(PunX @ 8.4.2010, 20:20) *
Да, это исправил заменил на Ui, но это не помогло.

private:
    Ui::MyForm *li;
}


Сообщение отредактировал BRE - 8.4.2010, 19:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 8.4.2010, 19:30
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


отредактировал до такого состояния, ошибок стало вроде меньше, но всё ранво не пойму что не так
.h
#ifndef DIALOG_LOGIN_H
#define DIALOG_LOGIN_H
#include <QDialog>
namespace Ui {
    class login;
}
class login : public QDialog{
    Q_OBJECT
public:
    login(QDialog *parent = 0);
    ~login();

private:
    Ui::login *ui;
};
#endif // DIALOG_LOGIN_H

.cpp
#include "dialog_login.h"
#include "ui_dialog_login.h"

login::login(QDialog *parent) : QDialog(parent),ui(new Ui::login)
{
    ui->setupUI(this);
}

login::~login()
{
    delete ui;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.4.2010, 19:34
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


#include "dialog_login.h"
login::login(QDialog *parent) : QDialog(parent),ui(new Ui::login)
{
    ui->setupUi(this);
}


А лучше покажи сразу все ошибки. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 8.4.2010, 19:38
Сообщение #20


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


project_alfa/dialog_login.cpp:4: error: invalid use of incomplete type 'struct Ui::login'
project_alfa/dialog_login.h:5: error: forward declaration of 'struct Ui::login'
project_alfa/dialog_login.cpp:6: error: invalid use of incomplete type 'struct Ui::login'
project_alfa/dialog_login.h:5: error: forward declaration of 'struct Ui::login'
project_alfa/dialog_login.cpp:10: warning: possible problem detected in invocation of delete operator:
project_alfa/dialog_login.cpp:10: warning: invalid use of incomplete type 'struct Ui::login'
project_alfa/dialog_login.h:5: warning: forward declaration of 'struct Ui::login'
project_alfa/dialog_login.cpp:10: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.

вот все которые вылетают, может я свою задачу не так реализовываю? может можно проще всё сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

7 страниц V  < 1 2 3 4 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 1:35