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

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

Страниц: 1 2 3 [4] 5 6   Вниз
  Печать  
Автор Тема: Получаю не правильный размер widget'a и маленький вопрос о include  (Прочитано 38702 раз)
BRE
Гость
« Ответ #45 : Декабрь 13, 2009, 22:31 »

Я не понял, как ты хочешь получить эти размеры(точно такие, какие будут после show() ) ??
Код
C++ (Qt)
MainWindow::MainWindow()
       : QWidget( 0 )
{
       QVBoxLayout *layout = new QVBoxLayout( this );
 
       QLabel *label = new QLabel( tr( "Label" ), this );
       layout->addWidget( label );
 
       QTextEdit *textEdit = new QTextEdit( this );
       textEdit->setMinimumSize( 400, 400 );
       layout->addWidget( textEdit );
 
       setLayout( layout );
 
       qDebug() << layout->activate();
       qDebug() << minimumSize(); // Размер виджета, который будет после show
 
qDebug() << textEdit->geometry(); // Геометрия дочернего виджета textEdit, которая будет после show
}
 
Записан
spectre71
Гость
« Ответ #46 : Декабрь 13, 2009, 22:37 »

При переключении вкладок должны меняться размеры главного окна, правильно? Т.е. логика как здесь: http://crossplatform.ru/node/242

Задача как раз обратная!
1) Диалог с закладками не должен менять размеры при переключении закладок(пока не поменяли компоновку и сосояние элементов)!
2) Его размеры должны определятся размерами максимальной ширины и высоты из всех закладок.

Это и есть типичная задача:
Сделали диалог с закладками, выбрали любую по-умочанию, сделали диалогу adjustSize и зафиксировали его размер, и не паримся что при перещелкивании закладок он его изменит.
Записан
BRE
Гость
« Ответ #47 : Декабрь 13, 2009, 22:40 »

Задача как раз обратная!
1) Диалог с закладками не должен менять размеры при переключении закладок(пока не поменяли компоновку и сосояние элементов)!
2) Его размеры должны определятся размерами максимальной ширины и высоты из всех закладок.

Это и есть типичная задача:
Сделали диалог с закладками, выбрали любую по-умочанию, сделали диалогу adjustSize и зафиксировали его размер, и не паримся что при перещелкивании закладок он его изменит.
Цитировать
По умолчанию, QTabWidget::minimumSizeHint() возвращает максимальный размер всех существующих страниц, а не только видимой страницы.
Записан
SABROG
Гость
« Ответ #48 : Декабрь 13, 2009, 22:45 »

Диалог с закладками не должен менять размеры при переключении закладок(пока не поменяли компоновку и сосояние элементов)!

сделали диалогу adjustSize и зафиксировали его размер, и не паримся что при перещелкивании закладок он его изменит.

Получается, если в выбраной вкладке по умолчанию количество элементов по высоте и/или ширине будет меньше чем в скрытых вкладках и мы сделаем adjustSize(), что (наверно) должно уменьшить размер окна, далее зафиксируем этот размер (setFixedSize()?), то при переключении на вкладку, где размеры элементов занимают большую площадь, все виджеты должны свернуться в трубочку, чтобы влезать в маленькое главное окошко или уползти за пределы виджета куда-то вбок или вниз до такой степени, что пользователю понадобится скроллбар. На примере компилируемых исходных кодов и картинок как должно быть (до и после) можешь показать чего ты хочешь?
Записан
spectre71
Гость
« Ответ #49 : Декабрь 13, 2009, 22:52 »

По умолчанию, QTabWidget::minimumSizeHint() возвращает максимальный размер всех существующих страниц, а не только видимой страницы.

Попробую
Записан
spectre71
Гость
« Ответ #50 : Декабрь 13, 2009, 22:54 »

Я не понял, как ты хочешь получить эти размеры(точно такие, какие будут после show() ) ??
Код
C++ (Qt)
...

Ладно, на сегодня отваливаюсь, пора спать. Улыбающийся
Завтра напишу тест и попробую подтвердить или опровергнуть предложеный тобой вариант. Если не прокатит, то выложу, поробуешь решить задачу для теста.
 
Записан
spectre71
Гость
« Ответ #51 : Декабрь 13, 2009, 22:56 »

Диалог с закладками не должен менять размеры при переключении закладок(пока не поменяли компоновку и сосояние элементов)!

сделали диалогу adjustSize и зафиксировали его размер, и не паримся что при перещелкивании закладок он его изменит.

Получается, если в выбраной вкладке по умолчанию количество элементов по высоте и/или ширине будет меньше чем в скрытых вкладках и мы сделаем adjustSize(), что (наверно) должно уменьшить размер окна, далее зафиксируем этот размер (setFixedSize()?), то при переключении на вкладку, где размеры элементов занимают большую площадь, все виджеты должны свернуться в трубочку, чтобы влезать в маленькое главное окошко или уползти за пределы виджета куда-то вбок или вниз до такой степени, что пользователю понадобится скроллбар. На примере компилируемых исходных кодов и картинок как должно быть (до и после) можешь показать чего ты хочешь?

Скроллбар не появится. Диалог расширится если минимальный требуемый размер для страницы больше текущего.
Записан
SABROG
Гость
« Ответ #52 : Декабрь 13, 2009, 23:25 »

Скроллбар не появится. Диалог расширится если минимальный требуемый размер для страницы больше текущего.

Естественно. Непонятно только зачем ограничивать размер окна настолько, чтобы виджеты не могли бы умещаться даже в свои минимальные размеры, ведь по тому, что я прочитал ты хочешь именно этого.
Записан
spectre71
Гость
« Ответ #53 : Декабрь 14, 2009, 07:42 »

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

Нет, ты меня не понял. Грустный
Задача сделать диалог с фиксированным размером, пользователь не может менять размер диалога.
Размер диалога должен программно установиться  так, чтобы:
- Все элементы были достаточных размеров - не имели скроллеров, итд.
И
- Был минимально возможных размеров
И
- Не изменял размеров при переключении закладок



Записан
spectre71
Гость
« Ответ #54 : Декабрь 14, 2009, 08:23 »

Вот сделал простой тест.
Задача заставить диалог иметь фиксированный минимально необходимый размер так, чтобы не было изменений его размеров при переключении закладок!
Расположение закладок не менять.
Закладку выбранную по-умочанию не менять.
Записан
BRE
Гость
« Ответ #55 : Декабрь 14, 2009, 09:39 »

Посмотри, у меня вроде делает так как ты хочешь.
Записан
spectre71
Гость
« Ответ #56 : Декабрь 14, 2009, 09:52 »

Посмотри, у меня вроде делает так как ты хочешь.

Нет, не работает. Не принимает манимально необходимый размер.

На картинке bad-size.png - размер что получилося у тебя
На картинке good-size.png - размер который должен быть
Записан
BRE
Гость
« Ответ #57 : Декабрь 14, 2009, 09:54 »

Нет, не работает. Не принимает манимально необходимый размер.
А ты мой файл dialog_options.ui используешь?  Подмигивающий
Записан
spectre71
Гость
« Ответ #58 : Декабрь 14, 2009, 09:55 »

Сделай так:
Код
C++ (Qt)
TDialogOptions::TDialogOptions(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
   setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
 
   adjustSize();
   setMaximumSize(geometry().size());
}
 

Потом запусти, перключись на первую закладку и увидишь тот размер который должен быть при первом запуске диалога(с выбраной второй закладкой)
Записан
spectre71
Гость
« Ответ #59 : Декабрь 14, 2009, 09:55 »

Нет, не работает. Не принимает манимально необходимый размер.
А ты мой файл dialog_options.ui используешь?  Подмигивающий

Да, полностью твой проект.
Записан
Страниц: 1 2 3 [4] 5 6   Вверх
  Печать  
 
Перейти в:  


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