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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ширина QDockWidget/dockWidgetArea  (Прочитано 7498 раз)
evilguard
Гость
« : Март 22, 2007, 15:11 »

Как задать ширину, QDockWidget(он находится в Qt::LeftDockWidgetArea, то есть слева). По умолчанию слишком широко, это как-нибудь можно задать?
Записан
Steven_Orko
Гость
« Ответ #1 : Март 25, 2007, 13:11 »

Юзай наследника с переопределенной
Код:
QSize sizeHint(void);
Записан
evilguard
Гость
« Ответ #2 : Март 25, 2007, 13:53 »

Смотрю свойства QWidget - нету элементарной функции setWidth(). Зачем для простейших операций плодить новый класс. Мне ж не поведение нужно какое-то специфическое определить, а просто задать параметр.
Записан
SABROG
Гость
« Ответ #3 : Март 25, 2007, 15:36 »

А так ?

Код:

            QRect rc = button->geometry();
            rc.setWidth(10);
            button->setGeometry(rc);


или так

Код:

            button->setMaximumWidth(10);
Записан
Steven_Orko
Гость
« Ответ #4 : Март 25, 2007, 22:42 »

Цитата: "evilguard"
Смотрю свойства QWidget - нету элементарной функции setWidth(). Зачем для простейших операций плодить новый класс. Мне ж не поведение нужно какое-то специфическое определить, а просто задать параметр.

А затем, что тебе явно не просто окошно это надо, на котором ничего не будет. Вряд ли ты не будешь помещать туда свои виджеты.
Логика тролей проста (читай, ООП): класс должен быть автомномным в своем существовании, т.е. (если я плохо сказал) он должен восприниматься другими класса как "черная коробочка" со входами и выходами. Хотя твой стиль программирование - это именно твой стиль, навязывать другой я тебе не буду...
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Март 25, 2007, 23:52 »

класс и так автономен... но я ж могу ему сказать - эй, ты, коробочка, давай-ка ширину поменяй, а как ты это сделаешь, мне пох.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
evilguard
Гость
« Ответ #6 : Март 27, 2007, 19:39 »

Steven_Orko
Мой стиль программирования возможно и неправильный,может я не понял понял что-то. То есть мне надо управлять шириной содержащегося на нем виджета(а точнее виджет лежит на лэйауте, а лэйаут соответственно на dockwidget). Так чью ширину мне изменять? Насчет входа и выхода(инкапсуляции то бишь) действительно - коробочка меняй ширину, а виджеты внутри нее сами в соответствии с ней подстроятся.
В дизайнере пробовал менять ширину. Не смотря на это компилируется все это хозяйство в окошко с фиксированной шириной. Похоже на баг, хотя точно не уверен.
Записан
Steven_Orko
Гость
« Ответ #7 : Март 28, 2007, 17:32 »

Цитата: "evilguard"

Мой стиль программирования возможно и неправильный,может я не понял понял что-то.

Не хотел наехать на стиль программирования... Извиняй )))
Цитата: "evilguard"

То есть мне надо управлять шириной содержащегося на нем виджета(а точнее виджет лежит на лэйауте, а лэйаут соответственно на dockwidget).  Так чью ширину мне изменять?


Насколько я понял выше, то надо было установить желаемую ширину/высоту для объекта класса  QDockWidget. Следовательно, ему и надо задавать. Создаешь класс-наследник, в котором определяешь 2 переменные-члена:
Код:

int m_iPreferedWidth; //Желаемая ширина
int m_PreferedHeight; //Желаемая высота


Создаешь, соответственно, 4 функции-члена:
Код:

void setPreferedWidth(const int iWidth) const; //Работает для вертикального положения
int preferedWidth(void) const;
void setPreferedHeight(const int iHieght) const; //Работает для горизонтального положения
int preferedHeight(void) const;


Переопределяешь функцию sizeHint():
Код:

QSize sizeHint(void) const;

Причем она должна возвращать разное значение QSize для разной ориентации QDockWidget. Написал бы и код, но я пишу по памяти, Assistant Qt4.x.x. нету рядом, т.к. работаю с Qt 3.х.х.
Таком метод мне подсказали сами Trolltech, когда я им писал вопрос насчет желаемой высоты QDockWidget. Так что... Использовать тебе его или нет решать тебе. ))))


Цитата: "evilguard"
Насчет входа и выхода(инкапсуляции то бишь) действительно - коробочка меняй ширину, а виджеты внутри нее сами в соответствии с ней подстроятся.


Все верно, так и получится ))))

Цитата: "evilguard"

В дизайнере пробовал менять ширину. Не смотря на это компилируется все это хозяйство в окошко с фиксированной шириной. Похоже на баг, хотя точно не уверен.


Насчет этого не знаю, не пробовал и попробовать негде, разве кто еще это сделает )))
Записан
evilguard
Гость
« Ответ #8 : Март 28, 2007, 19:48 »

Steven_Orko
Спасибо, буду пробывать!
Записан
VozaMFC
Гость
« Ответ #9 : Октябрь 02, 2009, 15:09 »

Дополнительную информацию как они все это делают можешь получит в кьюти демо/демонстрация/main window Qt 4.5.1
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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