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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите грабли обойти ...  (Прочитано 5613 раз)
Вячеслав
Гость
« : Октября 13, 2007, 22:11 »

Дано :
1) Qt 4.3.1
2) QDockWidget + QToolBox + несколько виджетов вложенных в тулбокс - все шикарно работает
3) Делаем свой виджет ,вкладываем его в док , а тулбоксину пихаем в свой виджет - после такого фокуса , размеры тулбокса становяться фиксированными и он(toolbox) вообще не реагирует на изменения виджета ....
Цитировать
mBox=new QToolBox(this);                           QVBoxLayout *layout = new QVBoxLayout(this);
 layout->setMargin(0);
 layout->addWidget(mBox);
 setLayout(layout);
Собственно вопрс - как заставить тулбоксину реагировать на изменения размера моего виджета ?
Записан
Kainit
Гость
« Ответ #1 : Октября 14, 2007, 13:19 »

Хотелось бы увидеть код полностью.

и на всякий случай поставь своему горемычному тулбоксу
setSizePolicy (обязательно!)
setResizePolicy

погляди как обращаются с тулбоксом в примере
examples\graphicsview\diagramscene\
Записан
Вячеслав
Гость
« Ответ #2 : Октября 15, 2007, 09:45 »

Политики пробывал крутить но ой Грустный
щаз стоит
Цитировать
setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum));
А код полностью - дома причешу и кину ...
Записан
QCasper
Гость
« Ответ #3 : Октября 15, 2007, 15:45 »

Может быть я что-то не так понимаю, но вот такой код работает надлежащим образом:

Код:
test::test(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
QDockWidget *dw = new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea, dw);

MyWidget *mw = new MyWidget(this);
dw->setWidget(mw);

QToolBox *tb = new QToolBox(mw);

QVBoxLayout *lt = new QVBoxLayout(mw);
lt->addWidget(tb);

tb->addItem(new QPushButton("First", tb), "Button");
tb->addItem(new QPushButton("Second", tb), "Another Button");
}
Записан
Вячеслав
Гость
« Ответ #4 : Октября 15, 2007, 23:08 »

а хз .... Это отличаеться от моего варианта только заданием парента лайоута вместо setLayout .Но все-равно спасибо - завтра попробую ...
Записан
yshurik
Гость
« Ответ #5 : Октября 16, 2007, 01:16 »

а хз .... Это отличаеться от моего варианта только заданием парента лайоута вместо setLayout .Но все-равно спасибо - завтра попробую ...

если хотите с setLayout то убирайте this:

mBox=new QToolBox;                           
QVBoxLayout * layout = new QVBoxLayout;
layout->addWidget(mBox);
setLayout(layout);

иначе делает reparent и скорее всего с этим связанна проблема
Записан
Вячеслав
Гость
« Ответ #6 : Октября 16, 2007, 09:27 »

Ясненько  - вечером покапаюсь;)
Записан
korka
Гость
« Ответ #7 : Ноября 10, 2008, 12:31 »

Здравствуйте.

Я пишу на PyQt, практически как на C++, синтакс немного отличается.

В продолжении этой темы:

Я создал QDockWidget как в примере, добавил функцию event на press mouse:

    def mousePressEvent(self,  QMouseEvent):
        print "mousePressEvent"

При запуски проги я нажимаю на rect DockWidget-а, этот event ни чего не распечатывает, если нажимю в не его, то срабатывает. Почему так? Я передаю и DockWidget-у и Widget-у(который даю DockWidget) parrent MainMenu, делаю их setEnabled(True)
Спасибо
Записан
Вячеслав
Гость
« Ответ #8 : Ноября 11, 2008, 09:16 »

а куды вывод print'a должен валиться ? Если приложение из консоли пущать - не спасет ?
Записан
korka
Гость
« Ответ #9 : Ноября 11, 2008, 16:44 »

print в console! Это не принципиально, можно print заменить на показ MsgBox  с каким нибудь техтом  В замешательстве
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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