PyQt4: как указать длину и ширину квадратов QGridLayout

Меня интересует длина и ширина строки в PyQt4, и я могу найти только методы, чтобы задать их количество или установить геометрию всего макета, но не видеть или указывать длину каждого квадрата. Я концептуализировал свой черновик так, чтобы он соответствовал сетке 125x125.

В отдельном, но не совсем не связанном, есть ли другой способ заказать виджет в окне, кроме макетов (H/V/Grid)?


person PuercoPop    schedule 13.02.2011    source источник


Ответы (1)


Цель макетов состоит в том, чтобы расположить их относительно друг друга.

Если вы хотите иметь фиксированные размеры и положение виджета, вы можете расположить их вручную вручную:

w = QWidget()
w.resize(800, 800)

i = QWidget(w)
i.move(200, 200)
i.setFixedSize(400, 400)
#alternatively: i.setGeometry(200, 200, 400, 400)

i.setStyleSheet("QWidget {background-color:blue}")
w.show()
person flying sheep    schedule 13.02.2011
comment
Установка размера строк и столбцов сетки, а также «заполнение» виджетами размера ячейки — это действительно распространенное использование макетов. Меня удивляет, что qt не имеет встроенного метода для этого. - person Greg; 02.07.2015
comment
потому что это плохая практика. Qt будет знать размер этих ячеек, строк и столбцов. вы этого не сделаете. Знаете ли вы, какая ширина текста в шрифте пользовательской темы? какие отступы у темы? что, если у него (у) есть функция специальных возможностей, которая делает текст огромным? в общем: если вы не рисуете каждый пиксель в своем виджете вручную, вам нечего делать в определении его размера. - person flying sheep; 03.07.2015
comment
Это неплохая практика, стандартная практика в современных фреймворках пользовательского интерфейса. Вы устанавливаете параметры темы, это ваша программа. - person Greg; 05.07.2015
comment
у вас есть какие-либо контраргументы относительно моих замечаний о том, что это плохая практика? если нет, то мои пункты остаются в силе, и это так. - person flying sheep; 05.07.2015
comment
HTML, WPF, winforms, среди прочего, имеют эту встроенную функцию и являются основным предложением в документации. Это показывает, что это стандартная практика. Это сделано таким образом, чтобы обеспечить одинаковый интервал для всех элементов. Ваш основной аргумент о том, что мы не знаем интервал между темами, шрифт и т. д., уже был опровергнут, потому что программисты могут и обычно управляют темой. Кроме того, утверждение, а затем заявление о том, что вы правы, потому что никто не опроверг вас, является ошибкой бремени доказательства. - person Greg; 05.07.2015
comment
нет. я не утверждал, что отказываюсь доказывать. Я доказал это, объяснив, насколько альтернативы неадекватны. теперь, если вы утверждаете, что они на самом деле адекватны, вы несете бремя доказывания. - person flying sheep; 06.07.2015