Russian Qt Forum
Ноябрь 27, 2024, 19:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрсы по использованию отдельных компонентов.  (Прочитано 6805 раз)
andi
Гость
« : Май 25, 2005, 07:41 »

Пишу многооконное приложение. Много окон в одном. Пользуюсь в основном примерами из книги (чего-то там про 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
Я так понимаю нужен еще один заголовочник?
При добавлении заголовочника, выскакивет сообщение, что  эту функцию можно вызывать только с объектом.
Так все таки, как правильно?
Записан
lepsai
Гость
« Ответ #1 : Май 25, 2005, 15:19 »

qApp - есть глобальный указатель, для того, что бы его использовать достаточно: #include <qapplication.h>
Записан
Keiko
Гость
« Ответ #2 : Май 25, 2005, 22:49 »

вопрос 2.:

статически это как ? Улыбающийся немодальные окна должны создаваться только с помощью new, иначе толку от них нет.

насчёт удаления после закрытия я хз, вроде они удаляются. Есть также флаг такой

Цитировать

Qt::WDestructiveClose - makes Qt delete this widget when the widget has accepted closeEvent(), or when the widget tried to ignore closeEvent() but could not.
Записан
andi
Гость
« Ответ #3 : Май 26, 2005, 06:31 »

Спасибо за ответы.
С qApp разобрался, получилось как надо.
Есть еще один не принципиальный вопрос. Когда запускаю приложение, то оформление главного окна соответствует установленному стилю KDE. Но окна внутри главного имеют другой стиль. Причем, у модальных окон стиль такой же как и у главного окна, а у не модальных какой-то корявый.
Где собака порылась?
Записан
Sergeich
Гость
« Ответ #4 : Май 27, 2005, 18:00 »

Цитата: "andi"
у модальных окон стиль такой же как и у главного окна, а у не модальных какой-то корявый.
Где собака порылась?

Заголовки главного окна и модальных окон отрисовываются оконным менеджером, а MDI окна рисует сама Qt, отсюда и разница
Записан
andi
Гость
« Ответ #5 : Май 31, 2005, 10:01 »

в продолжении темы про окна. А в каком направлении порыть относительно прорисовки MDI окна? Какие используются методы/способы/приемы? Можно ли как-то скопировать стиль оформления с главного окна и передать в дочернее?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 21.