crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Вызов окна от QMainWindow
KLIF
  опции профиля:
сообщение 24.10.2010, 12:39
Сообщение #1


Студент
*

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

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




Репутация:   0  


У меня проект от QMainWindow в нем вызываю еще одно окно если оно наследуется от QDialog я делаю так :
void DemAstPro::on_action_10_stvor_faile_triggered()
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
        Create_f_DemAsT w;
        w.setParent(this,Qt::Dialog);
        w.setWindowModality(Qt::ApplicationModal);
        w.show();
        w.exec();
        return;
}

и в этом случае все ок и все вполне реагирует нормально...
Мне нужно наследовать его от QMainWindow то так у меня не получается.....
И я не знаю как мое окно вызвать....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 24.10.2010, 13:15
Сообщение #2


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

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

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




Репутация:   94  


Цитата(KLIF @ 24.10.2010, 15:39) *
w.show();
w.exec();
за чем два метода вызываешь? метод exec() и так показывает диалог.

Цитата(KLIF @ 24.10.2010, 15:39) *
Мне нужно наследовать его от QMainWindow то так у меня не получается.....
QMainWindow не наследник QDialog и у него нет метода exec()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KLIF
  опции профиля:
сообщение 24.10.2010, 14:04
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 24.10.2010, 13:15) *
Цитата(KLIF @ 24.10.2010, 15:39) *
w.show();
w.exec();
за чем два метода вызываешь? метод exec() и так показывает диалог.

Цитата(KLIF @ 24.10.2010, 15:39) *
Мне нужно наследовать его от QMainWindow то так у меня не получается.....
QMainWindow не наследник QDialog и у него нет метода exec()


КАК сделать чтобы мое окно которое мне нужно вызвать наследовалось от QMainWindow ????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.10.2010, 15:23
Сообщение #4


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


KLIF, произвести класс от него :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KLIF
  опции профиля:
сообщение 24.10.2010, 17:39
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(Алексей1153 @ 24.10.2010, 15:23) *
KLIF, произвести класс от него :)

так и делаю, но оно его не показывает..... вернее появляется на пол секунды и закрывается... я не успеваю даже увидеть что оно отображает....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 24.10.2010, 17:52
Сообщение #6


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

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

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




Репутация:   94  


Цитата(KLIF @ 24.10.2010, 20:39) *
вернее появляется на пол секунды и закрывается... я не успеваю даже увидеть что оно отображает...
Цитата(Litkevich Yuriy @ 24.10.2010, 16:15) *
QMainWindow не наследник QDialog и у него нет метода exec()
соответственно и нет собственного цикла обработки событий.
Твой код:
void DemAstPro::on_action_10_stvor_faile_triggered()
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
        Create_f_DemAsT w;
        w.setParent(this,Qt::Dialog);
        w.setWindowModality(Qt::ApplicationModal);
        w.show();
        // w.exec(); - такого метода нет
        return;
}
Объект w, был создан, что-то ещё, затем вызван метод show(), этот метод отработал. Дальше написано return т.е. функция завершается. А раз функция завершается, то объект, созданный на стеке, тут же удаляется.

П.С.
Класс QMainWindow придуман для вполне очевидной цели, зачем пытаться сделать из него диалоговое окно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KLIF
  опции профиля:
сообщение 26.10.2010, 22:31
Сообщение #7


Студент
*

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

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




Репутация:   0  


Цитата(KLIF @ 24.10.2010, 12:39) *
У меня проект от QMainWindow в нем вызываю еще одно окно если оно наследуется от QDialog я делаю так :
void DemAstPro::on_action_10_stvor_faile_triggered()
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
        Create_f_DemAsT w;
        w.setParent(this,Qt::Dialog);
        w.setWindowModality(Qt::ApplicationModal);
        w.show();
        w.exec();
        return;
}

и в этом случае все ок и все вполне реагирует нормально...
Мне нужно наследовать его от QMainWindow то так у меня не получается.....
И я не знаю как мое окно вызвать....



надо было сделать примерно так :
void DemAstPro::on_action_10_stvor_faile_triggered()
{

    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
    Create_f_demast w;

    QDialog *ter = new QDialog (this);

    QGridLayout *nb = new QGridLayout (ter);
    nb->addWidget(&w);
    ter->show();
    ter->showMaximized();
    ter->exec();
    return;


}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 26.12.2024, 19:54