Как привязать кнопку к виджету? - PullRequest
4 голосов
/ 09 сентября 2010

Я создал очень простое окно с одной кнопкой на нем.Моя кнопка имеет идентификатор 10 пикселей от правого края окна и 10 от нижнего.Я хотел бы сохранить эту позицию, даже когда окно будет изменено.Это означает, что все еще 10 справа и 10 снизу.

Как это сделать ??

Спасибо

zalkap

Ответы [ 2 ]

6 голосов
/ 09 сентября 2010

Установите QGridLayout на виджет с 2 столбцами и 2 строками, добавьте кнопку в правой нижней ячейке, затем установите растяжение для первой строки и первого столбца.

QWidget *widget = new QWidget(); // The main window
QGridLayout *layout = new QGridLayout(widget); // The layout
QPushButton *button = new QPushButton(QString("Button"), widget); // The button

layout->setContentsMargin(10,10,10,10); // To have 10 pixels margins all around the widget
layout->addWidget(button, 1, 1);
layout->setRowStretch(0, 1);
layout->setColumnStretch(0, 1);
3 голосов
/ 09 сентября 2010

В общем, используйте макет.Это самое простое и надежное решение, и оно лучше всего работает с непредсказуемыми размерами виджетов (и в большинстве случаев они непредсказуемы из-за разных платформ, размеров шрифта, переведенных строк и т. Д.).Если вам действительно нужно расположить что-то вручную (это происходит не часто), вы можете переопределить resizeEvent () в родительском элементе и переместить дочерних элементов самостоятельно.Например,

void MyParentWidget::resizeEvent( QResizeEvent* ) {
    m_child->move( width() - m_child->width() - 10, height() - m_child->height() - 10 ); 
}

Это перемещает ребенка в правый нижний угол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...