Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mwChief от Февраль 25, 2010, 21:54



Название: Организация многооконных приложений
Отправлено: mwChief от Февраль 25, 2010, 21:54
Как правильно нужно организовывать многооконные приложения состящие из одного главного окна и n-го количества диалоговых, причем не все окна вызываются из главного, а некоторые диалоговые могут порождать другие диалоговые.
Как окнам разрешить использовать данные друг друга?


Название: Re: Организация многооконных приложений
Отправлено: mcrads от Февраль 25, 2010, 22:20
включать .h файлы. например win1.h содержит одно диалоговое окно. win2.h - другоеи из win2.h
файл win2.cpp:

#include win1.h
openNextDialog()
{
    ...
    win1 w = new win1(this);
    w->show();
    ...
}

и все. а если нужно получать доступ к членам win2 - сделайте их открытыми и обращайтесь w->chlen1 и тд
посмотрите внимательнее инфу об интерфейсе классов.


Название: Re: Организация многооконных приложений
Отправлено: mwChief от Февраль 25, 2010, 22:27
Понятно, спасибо.
Я так и делал, но у меня были сомнения в правильности.

И еще:
1. Это допустимо когда один класс не может жить без методов другого класса, но формально они никак друг с другом не связаны?
2. Наверное совсем глупый вопрос, нехочу создавать для него отдельную тему: если я использую QTableWidget добавляю новые строки и элементы QTableWidgetItem, то потом когда мне нужно удалить ставшие ненужными строки нужно ведь освободить память занятую под QTableWidgetItem. Есль ли способ сделать это для всей таблицы стразу или нужно проходить по каждому элементу? И вообще как это правильней сделать



Название: Re: Организация многооконных приложений
Отправлено: pastor от Февраль 25, 2010, 23:35
2. Наверное совсем глупый вопрос, нехочу создавать для него отдельную тему: если я использую QTableWidget добавляю новые строки и элементы QTableWidgetItem, то потом когда мне нужно удалить ставшие ненужными строки нужно ведь освободить память занятую под QTableWidgetItem. Есль ли способ сделать это для всей таблицы стразу или нужно проходить по каждому элементу? И вообще как это правильней сделать


Цитировать
void QTableWidget::clear ()   [slot]
Removes all items in the view. This will also remove all selections. The table dimensions stay the same.


Название: Re: Организация многооконных приложений
Отправлено: break от Февраль 26, 2010, 00:25
Цитировать
1. Это допустимо когда один класс не может жить без методов другого класса, но формально они никак друг с другом не связаны?
Недопустимо если хотите повторно использовать этот код. Фактически когда хотите правильно программировать, т.к. к возможности повторного использования кода надо стремиться. Мы у себя в команде пользуемся принципами - главное окошко может знать(но может и не знать по возможности) все о дочерних окнах, дочерние окна не знают ничего о главном. Как правило главное окно разных приложений содержит разную ф-сть, и так и так не получается повторно использовать его. А дочерние наоборот можно, при этом не завязывая через h файлы друг друга. Кроме того есть еще масса способов не инклудить друг в друга h файлы - сигналы и слоты, специальные "открытые" структуры для обмена информацией между окнами.