Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы при вызове формы 
V
    Опции темы
NZero
Дата 25.10.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 28.4.2010
Где: Москва

Репутация: нет
Всего: нет



Всем привет! Сделал вызов формы из главной формы при нажатии на кнопку, но создается новая форма, а не вызыватся нужная. В чем может быть проблема?
Заголовочный файл основной формы formgen.h
Код

#ifndef FORMGEN_H
#define FORMGEN_H

#include <QWidget>
#include <QtGui/QDialog>
#include <ui_formgen.h>
#include <ui_formhelp.h>

namespace Ui {
    class FormGen;
}

class FormGen : public QWidget, Ui::FormGen
{
    Q_OBJECT
public:
    explicit FormGen(QWidget *parent = 0);
    ~FormGen();
private:
    Ui::FormGen *ui;
public slots:
    void button_click_help();
};
class FormHelp : public QDialog, Ui::FormHelp{};

#endif // FORMGEN_H


Файл основной формы formgen.cpp

Код

#include "formgen.h"
#include "ui_formgen.h"
#include <Qt>

FormGen::FormGen(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::FormGen)
{
    ui->setupUi(this);

    /*Заполнение ComboBox CBOS*/
    ui->CBOS->addItem(QString("Debian"), 1);
    ui->CBOS->addItem(QString("Fedora"), 2);
    ui->CBOS->addItem(QString("Ubuntu"), 3);

    /*Кнопка вызова справки*/
    QObject::connect(ui->HButton, SIGNAL(clicked()), this, SLOT(button_click_help()));

    /*Кнопка Выход*/
    QObject::connect(ui->QButton, SIGNAL(clicked()), this, SLOT(close()));
}

FormGen::~FormGen()
{
    delete ui;
}

void FormGen::button_click_help()
{
    FormHelp *formh = new FormHelp();
    formh->show();
    formh->activateWindow();
//    formh->setAttribute(QT::WA_DeleteOnClose);
}


Это сообщение отредактировал(а) NZero - 25.10.2011, 11:47
PM MAIL WWW ICQ   Вверх
RazrFalcon
Дата 25.10.2011, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 29.7.2009

Репутация: 1
Всего: 1



Код

FormGen form;
form.exec();

PM MAIL   Вверх
bsa
Дата 25.10.2011, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Цитата(NZero @  25.10.2011,  12:42 Найти цитируемый пост)
FormHelp *formh = new FormHelp();

Это и есть создание новой формы. Чтобы использовать имеющуюся, тебе необходимо перенести эту строчку в конструктор (естественно, поместив указатель formh в тело класса, а в деструктор delete formh). А в button_click_help() оставить только formh->show().
PM   Вверх
NZero
Дата 25.10.2011, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 28.4.2010
Где: Москва

Репутация: нет
Всего: нет



Написал все как посоветовали, но теперь выскакивает ошибка в файле formgen.cpp:
ошибка: нет декларации ‘formh’ в этой области видимости
Заголовочный файл основной формы formgen.h
Код

#ifndef FORMGEN_H
#define FORMGEN_H

#include <QWidget>
#include <QtGui/QDialog>
#include <ui_formgen.h>
#include <ui_formhelp.h>

namespace Ui {
    class FormGen;
}

class FormGen : public QWidget, Ui::FormGen
{
    Q_OBJECT

public:
    explicit FormGen(QWidget *parent = 0);
    ~FormGen();

private:
    Ui::FormGen *ui;
public slots:
    void button_click_help();
};
class FormHelp : public QDialog, Ui::FormHelp
{
public:
    FormHelp *formh;// = new FormHelp();
};

/*FormHelp::~FormHelp()
{
    delete formh;
}*/


#endif // FORMGEN_H


Это сообщение отредактировал(а) NZero - 25.10.2011, 12:20
PM MAIL WWW ICQ   Вверх
math64
Дата 25.10.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



FormHelp *formh; нужно было добавить в class FormGen (желательно в секцию private, после Ui::FormGen *ui;
соответственно formh=new  FormHelp(this); в конструктор FormGen::FormGen(QWidget *parent) и 
delete formh; в деструктор FormGen::~FormGen()
PM   Вверх
NZero
Дата 25.10.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 28.4.2010
Где: Москва

Репутация: нет
Всего: нет



Сделал все как посоветовали, но вернулась проблема №1, создается новая форма, а не вызывается дочерняя(

Это сообщение отредактировал(а) NZero - 25.10.2011, 14:40
PM MAIL WWW ICQ   Вверх
loneybibi
Дата 25.10.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Я вообще не вижу проблемы. Как выше написали все должно работать. Вот прикрепил пример готовый!
Сори чуть не так понял пример заменил на другой думаю то что надо ! 

Это сообщение отредактировал(а) loneybibi - 25.10.2011, 15:00

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  test.zip 3,00 Kb


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
NZero
Дата 25.10.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 28.4.2010
Где: Москва

Репутация: нет
Всего: нет



Все заработало! Спасибо 
loneybibi, за пример, но я уже решил свою проблему) Но уверен, что Ваш пример тоже правильный и обязательно кому-нибудь поможет)
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0724 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.