Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: yarick от Март 11, 2013, 08:03



Название: sizePolicy() не работает!
Отправлено: 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....


Название: Re: sizePolicy() не работает!
Отправлено: Bepec от Март 11, 2013, 08:13
Если вы мне найдетё кнопку Qpushbutton, которую после запуска программы и без дополнительного кода можно растягивать мышкой, я вам подарю вафлю.

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

PS если кнопка лежит в лайауте, то возможно его политики перебивают ваши :D


Название: Re: sizePolicy() не работает!
Отправлено: yarick от Март 11, 2013, 13:36
Кнопка просто show-ится как окно, и при его растягивании она тоже растягивается!


Название: Re: sizePolicy() не работает!
Отправлено: GreatSnake от Март 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 )