Пишу многооконное приложение. Много окон в одном. Пользуюсь в основном примерами из книги (чего-то там про qt c opennet.ru).
Возникло пара-тройка вопросов.
Вопрос 1:
Для многооконности использую QWorkspace, все получается.
Когда одно из окон хочу сделать со сплиттером (QSplitter):
Spectr::Spectr(QWidget *parent, const char *name, WFlags flags)
: QWidget(parent, name, flags | WNoAutoErase)
{
// стряпаем интерфейс
//QSplitter *Vsplit = new QSplitter(Vertical,this);
QSplitter *Vsplit = new QSplitter(Vertical,parent);
QSplitter *Hsplit = new QSplitter(Horizontal, Vsplit);
....
если указать в качестве родителя основного сплиттера this (закоментированная строка), то сплиттер получается как бы вписан в прямоугольник размера не превышающий определенного размера. И когда окошко растягиваешь на весь экран, рабочая часть остается в виде прямоугольника в верхнем левом углу покрывая примерно 1/3 пространства. Если указать ему parent, то он растягивается вслед за размерами экрана. Но вместо одного окна получается два. Причем, что интересно, сначало появляется пустое окно принадлежащее классу Spectr (у него есть название устанавливаемое, после инициализации), а потом уже окно со сплиттером, так, как сплиттер я ни как не называл, то и заголовка у него нет. В остальном никаких неудобств не испытываю. Как извернуться так, чтоб и сплиттер на все окно был и двух окошек не выскакивало?
Вопрос 2. Когда я сразу после запуска приложения создаю несколько окошек, а потом щелкаю их по крестикам, что происходит? Соответствующие объекты удаляются из памяти? Или к ним как-то еще можно добраться? В случае если они динамически созданы, тогда вероятней всего удаляются из памяти. А вот если они объявленны статически, что будет?
Вопрос 3. Хочу использовать вызов processEvents()
В книге и в Qt Assistant, есть пара примеров на эту тему. Везде используется конструкция вида:
qApp->processEvents();
При этом qApp нигде кроме этой строки не встречается. Это раз, даже если использовать такой вызов QApplication::processEvents();
При компиляции выскакивает ошибка
error: incomplete type 'QApplication' cannot be used to name a
scope
Я так понимаю нужен еще один заголовочник?
При добавлении заголовочника, выскакивет сообщение, что эту функцию можно вызывать только с объектом.
Так все таки, как правильно?