24 #include <QFormLayout>
25 #include <QGridLayout>
38 QSize size = QWidgetItem::sizeHint();
47 QSize size = QWidgetItem::minimumSize();
56 QSize size = QWidgetItem::maximumSize();
74 int width = widget()->sizeHint().width();
77 rect.setLeft(rect.right() - width);
79 QWidgetItem::setGeometry(rect);
129 widget->installEventFilter(
this);
139 width = qMax(widget->sizeHint().width(), width);
142 item->setWidth(width);
143 item->formLayout()->update();
146 info.first->setColumnMinimumWidth(info.second, width);
154 widget->removeEventFilter(
this);
160 if (event->type() == QEvent::Resize) {
169 QGridLayout* gridLayout = qobject_cast<QGridLayout*>(layout);
170 QFormLayout* formLayout = qobject_cast<QFormLayout*>(layout);
173 }
else if (formLayout) {
174 if (column > QFormLayout::SpanningRole) {
175 qCritical() <<
"column should not be more than" << QFormLayout::SpanningRole
176 <<
"for QFormLayout";
179 QFormLayout::ItemRole role =
static_cast<QFormLayout::ItemRole
>(column);
182 qCritical() <<
"Don't know how to handle layout" << layout;
188 for (
int row = 0; row < layout->rowCount(); ++row) {
189 QLayoutItem* item = layout->itemAtPosition(row, column);
193 QWidget* widget = item->widget();
204 for (
int row = 0; row < layout->rowCount(); ++row) {
205 QLayoutItem* item = layout->itemAt(row, role);
209 QWidget* widget = item->widget();
213 layout->removeItem(item);
216 layout->setItem(row, role, newItem);
226 for (
int row = 0; row < layout->rowCount(); ++row) {
227 for (
int column = 0; column < layout->columnCount(); ++column) {
228 QLayoutItem* item = layout->itemAtPosition(row, column);
232 QWidget* widget = item->widget();
242 while (it.hasNext()) {
244 if (ci.first == layout) {
Defines the macro ASSERT.
#define ASSERT(condition)
QPair< QGridLayout *, int > GridColumnInfo
Defines class ColumnResizer.
ColumnResizerPrivate(ColumnResizer *q_ptr)
QList< GridColumnInfo > m_gridColumnInfoList
QList< QWidget * > m_widgets
QList< FormLayoutWidgetItem * > m_wrWidgetItemList
void scheduleWidthUpdate()
The ColumnResizer class provides vertically aligned widgets from diferent layouts.
void removeWidget(QWidget *widget)
virtual bool eventFilter(QObject *, QEvent *event)
ColumnResizer(QObject *parent=0)
ColumnResizerPrivate *const d
void addWidget(QWidget *widget)
void addWidgetsFromGridLayout(QGridLayout *, int column)
void addWidgetsFromFormLayout(QFormLayout *, QFormLayout::ItemRole role)
void dropWidgetsFromGridLayout(QGridLayout *layout)
void addWidgetsFromLayout(QLayout *, int column)