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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: sizePolicy() не работает!  (Прочитано 3403 раз)
yarick
Гость
« : Март 11, 2013, 08:03 »

Решил разобраться в тонкостях вывода QWidget. Экспериментирую с подсказкой о размере

Код:
  QPushButton* pushButton1 = new QPushButton("Button 1");
  QPushButton* pushButton2 = new QPushButton("Button 2 - long text");

  qDebug()<< pushButton1->sizeHint();//QSize(75, 23)
  qDebug()<< pushButton2->sizeHint();//QSize(104, 23)

  pushButton1->show();
  pushButton2->show();

  qDebug()<<pushButton1->sizePolicy().verticalPolicy();//0
  qDebug()<<pushButton1->sizePolicy().horizontalPolicy();//1
  pushButton1->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
  qDebug()<<pushButton1->sizePolicy().verticalPolicy();//0
  qDebug()<<pushButton1->sizePolicy().horizontalPolicy();//0-OK

По умолчанию высота кнопки фиксированная, а ширина - минимальное значение, т.е. её можно растягивать.
Например, я хочу установить и фиксированную высоту, и фиксированную ширину - чтобы значения sizeHint() интерпретировались напрямую.
Политику размера изменил, однако она не работает - кнопки всё равно показываются одинакового размера, хотя ширина QSize для второй явно больше. Кроме того, их ещё можно растягивать курсором мыши, хотя политика Fixed....
Записан
Bepec
Гость
« Ответ #1 : Март 11, 2013, 08:13 »

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

А так - вообще какой то ... эм. бред?

PS если кнопка лежит в лайауте, то возможно его политики перебивают ваши Веселый
Записан
yarick
Гость
« Ответ #2 : Март 11, 2013, 13:36 »

Кнопка просто show-ится как окно, и при его растягивании она тоже растягивается!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Март 11, 2013, 14:11 »

Кнопка просто show-ится как окно, и при его растягивании она тоже растягивается!
Т.е. лэйаут как таковой отсутствует.
Кто же мешал прочитать описание QSizePolicy Непонимающий
Цитата: assistant
The QSizePolicy class is a layout attribute describing horizontal and vertical resizing policy.

Хочешь зафиксировать размер - используй:
Код
C++ (Qt)
void QWidget::setFixedSize ( const QSize & s )
« Последнее редактирование: Март 11, 2013, 14:12 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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