Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2014, 11:49   #1
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
Радость Qt и QWidget как второе окно для настроен программы

Всем привет! Вообщем у меня обычный проект на Qt+Awesomium и VisualStudio2010. Решил добавить окно для настроек. Я создал новую форму в дизайнере и получил ui_settings.h и settings.ui Далее создал класс для моего окна настроек:
Цитата:
class Form : public QWidget
{
Q_OBJECT
public:
Form()
{
fui.setup(this);
}
~Form() {};
Ui::Form fui;
}
и затем в конструкторе главного окна я создал экземпляр окна настроек
Цитата:
AlgoBinary::AlgoBinary(QWidget* parent,Qt::WFlags flags) : QmainWindow(parent, flags)
{
ui.setupUi(this);
Form* sett = new Form();
sett->show();
}
и получается что когда я закрываю мое окно с настройками то закрывается все приложение и вроде открывается два экземпляра окна настроек. Мне нужно сделать чтобы по нажатии на кнопку закрыть окно скрывалось и я мог читать значения полей.Сколько не искал и не пытался, результат - ноль.

Всем заранее спасибо за помощь!
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:03   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Далее создал класс для моего окна настроек
Если Qt Add-in для VS стоит, то там в Qt classes есть шаблон Qt Gui Class, который все создаст.

В Add—>Class в проекте.

И окно настроек может лучше от QDialog наследовать, а не QWidget?

Тогда exec вместо show для открытия модального окна.

Код:
SettingsForm form(this);
form.exec();
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.11.2014 в 12:25.
Alex11223 вне форума Ответить с цитированием
Старый 14.11.2014, 12:12   #3
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

Add-in стоит только вот Qt старый и интерфейс немного другой:
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:12   #4
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

В чем разница Qdialog и QWidget?
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:15   #5
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

Где класс добавить нашел
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:22   #6
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

form.exec(); не нужен. использую дальше show() и просто поставил параметр modal в designer'e как true. Но вопрос все же остался: как сделать сворачивание окна диалога а не закрытие? или сохранять значение полей на закрытии окна.
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:24   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Проще модально открыть если надо, с QWidget это как-то сложнее делается вроде.
Есть методы accept(), reject() (например, для кнопок ОК/Cancel), exec возвращает соответствующий результат
Код:
if (form.exec() == QDialog::Accepted)
Цитата:
или сохранять значение полей на закрытии окна
ну, например, создайте какой-то объект с нужными свойствами, передавайте его форме настроек и там заполняйте поля формы значениями свойств и наоборот при закрытии.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.11.2014 в 12:33.
Alex11223 вне форума Ответить с цитированием
Старый 14.11.2014, 12:48   #8
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

а я от QDialog по вашему совету наследовал. на счет accept и reject мне нету смысла так как там будут настройки. которые буду наверное сохранять при закрытии диалогового окна. Только вот как вызвать мою функцию при закрытии диалога?
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:51   #9
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

я использую show а не exec так как exec замораживает главное окно
royalfint вне форума Ответить с цитированием
Старый 14.11.2014, 12:53   #10
royalfint
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 22
По умолчанию

почему то открывается два экземпляра диалога и по закрытию диалога все приложение закрывается ((
royalfint вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отловить Edit в чужой программе если все классы QWidget Smagulov85 Общие вопросы Delphi 7 02.09.2014 18:54
переход при нажатии на второе окно nwhta C# (си шарп) 16 09.11.2013 17:25
Не создаётся второе диалоговое окно из первого. 8Observer8 Qt и кроссплатформенное программирование С/С++ 14 15.01.2013 18:54
Как закрыть окно выполненной программы? Google0_0 Паскаль, Turbo Pascal, PascalABC.NET 10 06.08.2012 01:26
Как открыть не главное окно программы DimOn4Ik Общие вопросы Delphi 8 13.04.2010 17:23